Class: Proforma::Modeling::Pane::Column

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Types::Align
Defined in:
lib/proforma/modeling/pane/column.rb

Overview

A Pane Column is a list of lines that understands how to compile itself against a data source.

Constant Summary

Constants included from Types::Align

Types::Align::CENTER, Types::Align::LEFT, Types::Align::RIGHT

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(align: LEFT, label_width: nil, lines: [], value_width: nil) ⇒ Column

Returns a new instance of Column.



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

def initialize(
  align: LEFT,
  label_width: nil,
  lines: [],
  value_width: nil
)
  @align        = align
  @label_width  = label_width
  @lines        = Line.array(lines)
  @value_width  = value_width
end

Instance Attribute Details

#alignObject



39
40
41
# File 'lib/proforma/modeling/pane/column.rb', line 39

def align
  @align || LEFT
end

#label_widthObject



43
44
45
# File 'lib/proforma/modeling/pane/column.rb', line 43

def label_width
  @label_width ? @label_width.to_f : nil
end

#linesObject



51
52
53
# File 'lib/proforma/modeling/pane/column.rb', line 51

def lines
  Array(@lines)
end

#value_widthObject



47
48
49
# File 'lib/proforma/modeling/pane/column.rb', line 47

def value_width
  @value_width ? @value_width.to_f : nil
end

Instance Method Details

#compile(record, evaluator) ⇒ Object



55
56
57
58
59
60
61
62
63
64
# File 'lib/proforma/modeling/pane/column.rb', line 55

def compile(record, evaluator)
  compiled_lines = lines.map { |line| line.compile(record, evaluator) }

  self.class.new(
    align: align,
    label_width: label_width,
    lines: compiled_lines,
    value_width: value_width
  )
end