Class: Arrow::TableFormatter::ColumnFormatter
- Inherits:
-
Object
- Object
- Arrow::TableFormatter::ColumnFormatter
- Defined in:
- lib/arrow/table-formatter.rb
Constant Summary collapse
- FLOAT_N_DIGITS =
10
- FORMATTED_NULL =
"(null)"
Instance Attribute Summary collapse
-
#column ⇒ Object
readonly
Returns the value of attribute column.
-
#head_values ⇒ Object
readonly
Returns the value of attribute head_values.
-
#sample_values ⇒ Object
readonly
Returns the value of attribute sample_values.
-
#tail_values ⇒ Object
readonly
Returns the value of attribute tail_values.
Instance Method Summary collapse
- #aligned_data_type_name ⇒ Object
- #aligned_name ⇒ Object
- #data_type ⇒ Object
- #format_value(value, width = 0) ⇒ Object
- #formatted_data_type_name ⇒ Object
-
#initialize(table_formatter, column, head_values, tail_values) ⇒ ColumnFormatter
constructor
A new instance of ColumnFormatter.
- #name ⇒ Object
Constructor Details
#initialize(table_formatter, column, head_values, tail_values) ⇒ ColumnFormatter
Returns a new instance of ColumnFormatter.
27 28 29 30 31 32 33 34 |
# File 'lib/arrow/table-formatter.rb', line 27 def initialize(table_formatter, column, head_values, tail_values) @table_formatter = table_formatter @column = column @head_values = head_values @tail_values = tail_values @sample_values = head_values + tail_values @field_value_widths = {} end |
Instance Attribute Details
#column ⇒ Object (readonly)
Returns the value of attribute column.
23 24 25 |
# File 'lib/arrow/table-formatter.rb', line 23 def column @column end |
#head_values ⇒ Object (readonly)
Returns the value of attribute head_values.
24 25 26 |
# File 'lib/arrow/table-formatter.rb', line 24 def head_values @head_values end |
#sample_values ⇒ Object (readonly)
Returns the value of attribute sample_values.
26 27 28 |
# File 'lib/arrow/table-formatter.rb', line 26 def sample_values @sample_values end |
#tail_values ⇒ Object (readonly)
Returns the value of attribute tail_values.
25 26 27 |
# File 'lib/arrow/table-formatter.rb', line 25 def tail_values @tail_values end |
Instance Method Details
#aligned_data_type_name ⇒ Object
44 45 46 47 |
# File 'lib/arrow/table-formatter.rb', line 44 def aligned_data_type_name @aligned_data_type_name ||= "%*s" % [aligned_name.size, formatted_data_type_name] end |
#aligned_name ⇒ Object
53 54 55 |
# File 'lib/arrow/table-formatter.rb', line 53 def aligned_name @aligned_name ||= format_aligned_name(name, data_type, @sample_values) end |
#data_type ⇒ Object
36 37 38 |
# File 'lib/arrow/table-formatter.rb', line 36 def data_type @data_type ||= @column.data_type end |
#format_value(value, width = 0) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/arrow/table-formatter.rb', line 60 def format_value(value, width=0) case value when ::Time value.iso8601 when Float "%*f" % [[width, FLOAT_N_DIGITS].max, value] when Integer "%*d" % [width, value] when Hash formatted_values = data_type.fields.collect do |field| field_name = field.name field_value_width = compute_field_value_width(field, @sample_values) formatted_name = format_value(field_name, 0) formatted_value = format_value(value[field_name], field_value_width) "#{formatted_name}: #{formatted_value}" end formatted = +"{" formatted << formatted_values.join(", ") formatted << "}" "%-*s" % [width, formatted] when nil "%*s" % [width, FORMATTED_NULL] else "%-*s" % [width, value.to_s] end end |
#formatted_data_type_name ⇒ Object
40 41 42 |
# File 'lib/arrow/table-formatter.rb', line 40 def formatted_data_type_name @formatted_data_type_name ||= "(#{data_type.name})" end |
#name ⇒ Object
49 50 51 |
# File 'lib/arrow/table-formatter.rb', line 49 def name @name ||= @column.name end |