Class: Reportinator::ReportLoader

Inherits:
Base
  • Object
show all
Defined in:
lib/reportinator/report/loader.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

config, #config, logger, #logger

Methods included from Helpers

#merge_hash, #merge_hash!, #symbolize_attributes

Class Method Details

.load(template, metadata = {}) ⇒ Object



6
7
8
9
10
# File 'lib/reportinator/report/loader.rb', line 6

def self.load(template,  = {})
  loader = new(metadata: )
  loader.template = Template.load(template: template, metadata: )
  loader
end

Instance Method Details

#get_metadataObject



12
13
14
15
16
17
18
19
# File 'lib/reportinator/report/loader.rb', line 12

def 
   = {}
  template.parse() do |data, old_meta, new_meta|
    meta = ValueParser.parse(new_meta, )
     = merge_hash(meta, ) if meta.present?
  end
  
end

#parse_metadata(data, old_meta, new_meta) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/reportinator/report/loader.rb', line 33

def (data, old_meta, new_meta)
  meta = ValueParser.parse(old_meta, )
  if new_meta.instance_of? Hash
    unparsed_meta = new_meta.select { |key| config..include? key }
    meta_to_parse = new_meta.reject { |key| config..include? key }
    parsing_meta = merge_hash(meta, unparsed_meta)
    parsed_meta = ValueParser.parse(meta_to_parse, parsing_meta)
    remerged_meta = merge_hash(parsed_meta, unparsed_meta)
  else
    remerged_meta = {}
  end
  report_meta = merge_hash(remerged_meta, meta)
  report_from_data(data, report_meta)
end

#reportObject



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/reportinator/report/loader.rb', line 21

def report
  report = Report.new
  reports = template.parse() do |data, old_meta, new_meta|
    (data, old_meta, new_meta)
  end
  reports.compact.each do |report_template|
    output = report_template.data
    report.insert(output)
  end
  report
end