Sha256: 6ede1c99acddd5d877df5e0a3455a619711f4dc67c304cc3a691fc8c8f11c732
Contents?: true
Size: 1011 Bytes
Versions: 1
Compression:
Stored size: 1011 Bytes
Contents
module Termtable class Table def initialize(*args) if args.first.is_a?(Array) && args.depth == 1 raise Termtable::Error::InitializationError, '2d array required for initialization' end if args.empty? @rows = [] yield(self) if block_given? else if args.first.is_a?(Hash) headers = args.first.delete(:headers) @rows = args.first.delete(:rows) elsif args.size == 2 headers, @rows = args else @rows = args.first end buffer_jagged_array! @rows = @rows.map { |row| Row.new(row) } @rows.unshift(Header.new(headers)) unless headers.nil? end end def buffer_jagged_array! max = @rows.map(&:size).max @rows.map { |row| (max - row.size).times { row << ' ' } } end def row_count @rows.size end def <<(row) @rows << Row.new(row) end def render(**opts) Render.new(@rows, opts).exec end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
termtable-0.1.0 | lib/termtable/table.rb |