Class: Proforma::Modeling::DataTable

Inherits:
Object
  • Object
show all
Includes:
Compiling::Compilable
Defined in:
lib/proforma/modeling/data_table.rb,
lib/proforma/modeling/data_table/column.rb,
lib/proforma/modeling/data_table/aggregator.rb

Overview

A table that understands how to be compiled against a data source.

Defined Under Namespace

Classes: Aggregator, Column

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(aggregators: [], columns: [], empty_message: '', property: nil) ⇒ DataTable

Returns a new instance of DataTable.



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/proforma/modeling/data_table.rb', line 26

def initialize(
  aggregators: [],
  columns: [],
  empty_message: '',
  property: nil
)
  @aggregators    = Aggregator.array(aggregators)
  @columns        = Column.array(columns)
  @empty_message  = empty_message
  @property       = property
end

Instance Attribute Details

#aggregatorsObject



42
43
44
# File 'lib/proforma/modeling/data_table.rb', line 42

def aggregators
  Array(@aggregators)
end

#columnsObject



46
47
48
# File 'lib/proforma/modeling/data_table.rb', line 46

def columns
  Array(@columns)
end

#empty_messageObject



38
39
40
# File 'lib/proforma/modeling/data_table.rb', line 38

def empty_message
  @empty_message.to_s
end

#propertyObject

Returns the value of attribute property.



20
21
22
# File 'lib/proforma/modeling/data_table.rb', line 20

def property
  @property
end

Instance Method Details

#compile(data, evaluator) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/proforma/modeling/data_table.rb', line 50

def compile(data, evaluator)
  records = array(evaluator.value(data, property))

  return Text.new(value: empty_message) if show_empty_message?(records)

   = (records, evaluator)

  Table.new(
    body: make_body(records, evaluator),
    footer: make_footer(, evaluator),
    header: make_header({}, evaluator)
  )
end