Class: TableTransformer::Data
- Inherits:
-
Object
- Object
- TableTransformer::Data
- Defined in:
- lib/table_transformer.rb
Instance Attribute Summary collapse
-
#keys ⇒ Object
readonly
Returns the value of attribute keys.
-
#original ⇒ Object
readonly
Returns the value of attribute original.
Instance Method Summary collapse
- #column_width ⇒ Object
-
#initialize(original:, keys: []) ⇒ Data
constructor
A new instance of Data.
- #line_generator ⇒ Object
- #max_size ⇒ Object
- #output ⇒ Object
- #output_data ⇒ Object
- #output_data_given_data ⇒ Object
- #string_data ⇒ Object
Constructor Details
#initialize(original:, keys: []) ⇒ Data
Returns a new instance of Data.
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/table_transformer.rb', line 8 def initialize(original:, keys: []) @original = if original.class.method_defined?(:keys) [] << original else [] + original end @keys = if keys.blank? @original[0].keys else keys end end |
Instance Attribute Details
#keys ⇒ Object (readonly)
Returns the value of attribute keys.
7 8 9 |
# File 'lib/table_transformer.rb', line 7 def keys @keys end |
#original ⇒ Object (readonly)
Returns the value of attribute original.
7 8 9 |
# File 'lib/table_transformer.rb', line 7 def original @original end |
Instance Method Details
#column_width ⇒ Object
67 68 69 70 71 72 73 74 75 |
# File 'lib/table_transformer.rb', line 67 def column_width @column_width ||= {}.tap do |width| keys.each do |k| width[k] = max_size[k] < k.size ? k.size : max_size[k] width[k] += 2 end break width end end |
#line_generator ⇒ Object
61 62 63 64 65 |
# File 'lib/table_transformer.rb', line 61 def line_generator @line_generator ||= LineGenerator.new( column_width: column_width ) end |
#max_size ⇒ Object
77 78 79 80 81 82 83 84 85 |
# File 'lib/table_transformer.rb', line 77 def max_size @max_size ||= {}.tap do |size| keys.each do |k| max_data = string_data.max_by { |data| data[k].to_s.size } size[k] = max_data[k].to_s.size end break size end end |
#output ⇒ Object
21 22 23 |
# File 'lib/table_transformer.rb', line 21 def output puts output_data end |
#output_data ⇒ Object
25 26 27 28 29 30 31 32 |
# File 'lib/table_transformer.rb', line 25 def output_data @output_data ||= if string_data.present? output_data_given_data else "Empty set\n\n" end end |
#output_data_given_data ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/table_transformer.rb', line 34 def output_data_given_data [].tap do |arr| arr << line_generator.delimiter_line arr << line_generator.header_line arr << line_generator.delimiter_line string_data.each do |data| arr << line_generator.data_line(data) end arr << line_generator.delimiter_line arr << "#{string_data.size} rows in set\n\n" end end |
#string_data ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/table_transformer.rb', line 47 def string_data @string_data ||= [].tap do |arr| original.each do |data| transformed_data = {}.tap do |t_data| keys.each do |k| t_data[k] = data[k].to_s end break t_data end arr << transformed_data if transformed_data.present? end end end |