class SimpleTables::PivotTable

Public Class Methods

new() click to toggle source
# File lib/simple_tables/pivot_table.rb, line 3
def initialize
  self.default=0
end

Public Instance Methods

add_column(name,&block) click to toggle source
# File lib/simple_tables/pivot_table.rb, line 7
def add_column(name,&block)
  added_columns[name]=block
  self
end
added_columns() click to toggle source
# File lib/simple_tables/pivot_table.rb, line 12
def added_columns
  @added_columns||=Hash.new
end
as_arrays() click to toggle source
# File lib/simple_tables/pivot_table.rb, line 36
def as_arrays
  result=[['#']+column_headers(true)]

  result << rows

  result
end
column_headers(all=false) click to toggle source
# File lib/simple_tables/pivot_table.rb, line 16
def column_headers(all=false)
  return ['#'] + self.keys.map{|k| k[0]}.uniq + added_columns.keys if all

  self.keys.map{|k| k[0]}.uniq
end
row_headers() click to toggle source
# File lib/simple_tables/pivot_table.rb, line 22
def row_headers
  self.map{|k,v| k[1]}.uniq
end
rows() click to toggle source
# File lib/simple_tables/pivot_table.rb, line 26
def rows
  result=[]
  row_headers.each do |rh|
    row = column_headers.map{|ch| self[[ch,rh]]}
    result << [rh] + row + added_columns.values.map{|v| v.call row }
  end

  result
end