class Tabl::Table
Attributes
columns[R]
keys[R]
Public Class Methods
new(args = {}) { |self| ... }
click to toggle source
# File lib/tabl/table.rb, line 6 def initialize(args = {}) @base_columns = {} add_base_columns(args[:base_columns] || {}) @formats = {} @columns = {} self.columns=(args[:columns] || []) yield self if block_given? end
Public Instance Methods
add_base_columns(columns)
click to toggle source
# File lib/tabl/table.rb, line 15 def add_base_columns(columns) columns.each do |column| @base_columns[column.name] = column end end
base_columns()
click to toggle source
# File lib/tabl/table.rb, line 25 def base_columns @base_columns.values end
column(key)
click to toggle source
# File lib/tabl/table.rb, line 49 def column(key) @columns[key] || @base_columns[key] end
columns=(keys)
click to toggle source
# File lib/tabl/table.rb, line 29 def columns=(keys) @keys = keys @columns_cache = nil @keys.each do |key| @columns[key] ||= Column.new(key) unless @base_columns.include?(key) end end
labels()
click to toggle source
# File lib/tabl/table.rb, line 37 def labels @keys.map { |key| column(key).label } end
method_missing(name, *args) { |column| ... }
click to toggle source
Calls superclass method
# File lib/tabl/table.rb, line 53 def method_missing(name, *args) # Check columns first, creating an override if one doesn't exist already. column = @columns[name] || (@base_columns.include?(name) && @columns[name] = @base_columns[name].clone) if column yield column if block_given? return column end # Check formats next format = @formats[name] return format if format # Create a new format object format_base = Formats.send(name) || super @formats[name] = Format.new(name, self, format_base) end
to_csv(records)
click to toggle source
# File lib/tabl/table.rb, line 70 def to_csv(records) FasterCSV.generate do |csv| csv << labels records.each do |record| csv << values(record) end end end
value(key, record)
click to toggle source
# File lib/tabl/table.rb, line 45 def value(key, record) column(key).value(record) end
values(record)
click to toggle source
# File lib/tabl/table.rb, line 41 def values(record) @keys.map { |key| value(key, record) } end