Class: Tabular::Column

Inherits:
Object
  • Object
show all
Includes:
Blank
Defined in:
lib/tabular/column.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Blank

#is_blank?

Constructor Details

#initialize(table, columns, key = nil, columns_map = {}) ⇒ Column

table – parent Table column – parent Columns key is normalized to a downcase, underscored symbol



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/tabular/column.rb', line 10

def initialize(table, columns, key = nil, columns_map = {})
  @columns = columns
  @table = table

  key = symbolize(key)
  columns_map = columns_map || {}
  map_for_key = columns_map[key]

  @column_type = :string
  case map_for_key
  when nil
    @key = key
    @column_type = :date if key == :date
  when Symbol
    @key = map_for_key
    @column_type = :date if key == :date
  when Hash
    @key = key
    @column_type = map_for_key[:column_type]
  else
    raise "Expected Symbol or Hash, but was #{map_for_key.class}"
  end
end

Instance Attribute Details

#column_typeObject (readonly)

Returns the value of attribute column_type.



5
6
7
# File 'lib/tabular/column.rb', line 5

def column_type
  @column_type
end

#keyObject (readonly)

Returns the value of attribute key.



5
6
7
# File 'lib/tabular/column.rb', line 5

def key
  @key
end

Instance Method Details

#cellsObject

All cells value under this Column



39
40
41
# File 'lib/tabular/column.rb', line 39

def cells
  rows.map { |r| r[key] }
end

#inspectObject



63
64
65
# File 'lib/tabular/column.rb', line 63

def inspect
  "#<Tabular::Column #{key} #{column_type}>"
end

#maxObject

Maximum value for cells in the Column. Determine with Ruby #max



44
45
46
# File 'lib/tabular/column.rb', line 44

def max
  cells.compact.max
end

#precisionObject

Number of zeros to the right of the decimal point. Useful for formtting time data.



49
50
51
# File 'lib/tabular/column.rb', line 49

def precision
  @precision || cells.map(&:to_f).map {|n| n.round(3) }.map {|n| n.to_s.split(".").last.gsub(/0+$/, "").length }.max
end

#renderObject

Human-friendly header string. Delegate to renderer‘s render_header method.



54
55
56
# File 'lib/tabular/column.rb', line 54

def render
  renderer.render_header self
end

#rendererObject

Renderer



59
60
61
# File 'lib/tabular/column.rb', line 59

def renderer
  @columns.renderer(key)
end

#rowsObject



34
35
36
# File 'lib/tabular/column.rb', line 34

def rows
  @table.rows
end

#to_sObject



67
68
69
# File 'lib/tabular/column.rb', line 67

def to_s
  key.to_s
end