Class: ReportLogic::Session

Inherits:
Object
  • Object
show all
Includes:
Decorable
Defined in:
lib/report_logic/session.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Decorable

#decorate_with, #decorators

Constructor Details

#initialize(key = nil, report = nil) ⇒ Session

Returns a new instance of Session.



7
8
9
# File 'lib/report_logic/session.rb', line 7

def initialize(key = nil, report = nil)
  @key, @report = key, report
end

Instance Attribute Details

#keyObject

Returns the value of attribute key.



5
6
7
# File 'lib/report_logic/session.rb', line 5

def key
  @key
end

#reportObject

Returns the value of attribute report.



5
6
7
# File 'lib/report_logic/session.rb', line 5

def report
  @report
end

Instance Method Details

#current_rowObject



15
16
17
# File 'lib/report_logic/session.rb', line 15

def current_row
  @current_row ||= fields
end

#decorate(master_decorators = nil) ⇒ Object



40
41
42
43
44
45
46
47
48
49
# File 'lib/report_logic/session.rb', line 40

def decorate(master_decorators = nil)
  master_decorators ||= []
  fields.each do |field_or_row|
    if field_or_row.respond_to?(:each)
      field_or_row.each { |f| f.decorate(master_decorators + decorators) }
    else
      field_or_row.decorate(master_decorators + decorators)
    end
  end
end

#field(name, value = nil, **options) ⇒ Object



19
20
21
# File 'lib/report_logic/session.rb', line 19

def field(name, value = nil, **options)
  current_row << Field.new(name, value, **options)
end

#fieldsObject



11
12
13
# File 'lib/report_logic/session.rb', line 11

def fields
  @fields ||= []
end

#process(collection = nil) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/report_logic/session.rb', line 27

def process(collection = nil)
  if collection.respond_to?(:each)
    collection.each do |record|
      @current_row = []
      yield record
      fields.push current_row
      @current_row = nil
    end
  else
    yield
  end
end

#value(val, **options) ⇒ Object



23
24
25
# File 'lib/report_logic/session.rb', line 23

def value(val, **options)
  field(nil, val, **options)
end