Class: TableOfTruth::Table
- Inherits:
-
Object
- Object
- TableOfTruth::Table
- Defined in:
- lib/table_of_truth/table.rb
Instance Attribute Summary collapse
- #expression_names ⇒ Array<String or Symbol> readonly
-
#expressions ⇒ Hash<(String or Symbol)->Proc
readonly
].
- #input_names ⇒ Array<String or Symbol> readonly
-
#inputs ⇒ Hash<(String or Symbol)->Array
readonly
].
Instance Method Summary collapse
- #equivalent? ⇒ Boolean
-
#initialize(&block) ⇒ Table
constructor
A new instance of Table.
- #print!(colorize: true) ⇒ void
-
#results ⇒ Array<Hash{String->Boolean}
].
Constructor Details
#initialize(&block) ⇒ Table
Returns a new instance of Table.
17 18 19 20 21 22 23 24 25 |
# File 'lib/table_of_truth/table.rb', line 17 def initialize(&block) dsl = DSL.new dsl.instance_eval(&block) @inputs = dsl.inputs @input_names = dsl.input_names @expressions = dsl.expressions @expression_names = dsl.expression_names end |
Instance Attribute Details
#expression_names ⇒ Array<String or Symbol> (readonly)
15 16 17 |
# File 'lib/table_of_truth/table.rb', line 15 def expression_names @expression_names end |
#expressions ⇒ Hash<(String or Symbol)->Proc (readonly)
Returns ].
13 14 15 |
# File 'lib/table_of_truth/table.rb', line 13 def expressions @expressions end |
#input_names ⇒ Array<String or Symbol> (readonly)
11 12 13 |
# File 'lib/table_of_truth/table.rb', line 11 def input_names @input_names end |
#inputs ⇒ Hash<(String or Symbol)->Array (readonly)
Returns ].
9 10 11 |
# File 'lib/table_of_truth/table.rb', line 9 def inputs @inputs end |
Instance Method Details
#equivalent? ⇒ Boolean
63 64 65 |
# File 'lib/table_of_truth/table.rb', line 63 def equivalent? results.all? { |result| result.values_at(*expression_names).uniq.length == 1 } end |
#print!(colorize: true) ⇒ void
This method returns an undefined value.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/table_of_truth/table.rb', line 38 def print!(colorize: true) String.disable_colorization = !colorize builder = StringIO.new # Header input_header = input_names.join(' | ') expression_header = expression_names.join(' | ') builder.puts("#{input_header} || #{expression_header}") # Rows results.each do |result| inputs_string = input_names.map { |name| output_string(result[name]).center(name.length) }.join(' | ') outputs_string = expression_names.map { |name| output_string(result[name]).center(name.length) }.join(' | ') outputs = expression_names.map { |name| result[name] } outputs_string = outputs.uniq.length == 1 ? outputs_string.on_green : outputs_string.on_red builder.puts [inputs_string, outputs_string].join(' || ') end puts builder.string end |
#results ⇒ Array<Hash{String->Boolean}
Returns ].
28 29 30 31 32 33 34 35 |
# File 'lib/table_of_truth/table.rb', line 28 def results @results ||= input_table.map do |inputs| result = inputs.dup expressions.each { |name, expression| result[name] = Inputs.new(inputs).instance_eval(&expression) } result end end |