Class: Locd::CLI::Table
- Inherits:
-
Object
- Object
- Locd::CLI::Table
- Includes:
- Enumerable
- Defined in:
- lib/locd/cli/table.rb
Defined Under Namespace
Classes: Column
Constant Summary collapse
- SUPERSCRIPT_NUMBERS =
Unicode superscript number to use as references for columns with descriptions.
[ "\u2070", "\u00B9", "\u00B2", "\u00B3", "\u2070", "\u2074", "\u2075", "\u2076", "\u2077", "\u2078", "\u2079", ].freeze
- NULL =
'␀'
Class Method Summary collapse
Instance Method Summary collapse
- #column(*args, &getter) ⇒ Object (also: #col)
- #each(&block) ⇒ Object
- #each_index(&block) ⇒ Object
-
#footer ⇒ Object
to_a.
-
#initialize ⇒ Table
constructor
.build.
- #rows(entries = nil) ⇒ Object
- #to_a(header: true, col_desc_refs: true) ⇒ Object
Constructor Details
#initialize ⇒ Table
.build
84 85 86 87 |
# File 'lib/locd/cli/table.rb', line 84 def initialize @columns = [] @rows = [] end |
Class Method Details
.build(&block) ⇒ return_type
TODO:
Document build method.
Returns @todo Document return value.
80 81 82 |
# File 'lib/locd/cli/table.rb', line 80 def self.build &block new.tap &block end |
Instance Method Details
#column(*args, &getter) ⇒ Object Also known as: col
97 98 99 |
# File 'lib/locd/cli/table.rb', line 97 def column *args, &getter @columns << Column.new( *args, &getter ) end |
#each(&block) ⇒ Object
89 90 91 |
# File 'lib/locd/cli/table.rb', line 89 def each &block @rows.each &block end |
#each_index(&block) ⇒ Object
93 94 95 |
# File 'lib/locd/cli/table.rb', line 93 def each_index &block @rows.each_index &block end |
#footer ⇒ Object
to_a
149 150 151 152 153 154 |
# File 'lib/locd/cli/table.rb', line 149 def NULL + " Null\n" + @columns.select { |col| col.desc }.each_with_index.map { |col, index| "#{ SUPERSCRIPT_NUMBERS[index + 1] } #{ col.desc }" }.join( "\n" ) end |
#rows(entries = nil) ⇒ Object
104 105 106 107 108 109 110 |
# File 'lib/locd/cli/table.rb', line 104 def rows entries = nil unless entries.nil? @rows = entries.to_a end @rows end |
#to_a(header: true, col_desc_refs: true) ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/locd/cli/table.rb', line 113 def to_a header: true, col_desc_refs: true [].tap do |array| if header desc_ref_index = 0 array << @columns.map { |column| if column.desc && col_desc_refs desc_ref_index += 1 "#{ column.name }#{ SUPERSCRIPT_NUMBERS[desc_ref_index] }" else column.name end } end @rows.each do |row| values = if NRSER.array_like? row row.to_a else @columns.map do |column| column.getter.call( row ) end end array << values.map { |value| if value.nil? NULL else value.to_s end } end end end |