class Locd::CLI::Table

Constants

NULL
SUPERSCRIPT_NUMBERS

Unicode superscript number to use as references for columns with descriptions.

@return [Array<String>]

Public Class Methods

build(&block) click to toggle source

@todo Document build method.

@param [type] arg_name

@todo Add name param description.

@return [return_type]

@todo Document return value.
# File lib/locd/cli/table.rb, line 80
def self.build &block
  new.tap &block
end
new() click to toggle source
# File lib/locd/cli/table.rb, line 84
def initialize
  @columns = []
  @rows = []
end

Public Instance Methods

col(*args, &getter)
Alias for: column
column(*args, &getter) click to toggle source
# File lib/locd/cli/table.rb, line 97
def column *args, &getter
  @columns << Column.new( *args, &getter )
end
Also aliased as: col
each(&block) click to toggle source
# File lib/locd/cli/table.rb, line 89
def each &block
  @rows.each &block
end
each_index(&block) click to toggle source
# File lib/locd/cli/table.rb, line 93
def each_index &block
  @rows.each_index &block
end
rows(entries = nil) click to toggle source
# 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) click to toggle source
# 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