Class: ThinkFeelDoEngine::Reports::Reporter

Inherits:
Object
  • Object
show all
Defined in:
app/models/think_feel_do_engine/reports/reporter.rb

Overview

Produces formatted versions of data produced by a data collector. The collector is expected to have two methods: columns returns a collection of column names all returns a collection of Hashes whose keys match the column names

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(collector) ⇒ Reporter

Returns a new instance of Reporter.



20
21
22
23
# File 'app/models/think_feel_do_engine/reports/reporter.rb', line 20

def initialize(collector)
  @collector = collector
  @path = self.class.file_path(parsed_name)
end

Class Method Details

.fetch_reportsObject



10
11
12
13
# File 'app/models/think_feel_do_engine/reports/reporter.rb', line 10

def self.fetch_reports
  return [] unless Rails.application.config.respond_to?(:reports)
  Rails.application.config.reports
end

.file_path(name) ⇒ Object



15
16
17
18
# File 'app/models/think_feel_do_engine/reports/reporter.rb', line 15

def self.file_path(name)
  Rails.application.config.reports_root_path
    .join("reports/#{name.to_s.scan(/[a-z]+/).join.downcase}.csv")
end

Instance Method Details

#to_csv(csv = []) ⇒ Object



31
32
33
34
35
36
# File 'app/models/think_feel_do_engine/reports/reporter.rb', line 31

def to_csv(csv = [])
  csv << @collector.columns
  @collector.all.each do |s|
    csv << @collector.columns.map { |c| s[c.to_sym] }
  end
end

#write_csvObject



25
26
27
28
29
# File 'app/models/think_feel_do_engine/reports/reporter.rb', line 25

def write_csv
  CSV.open(@path, "wb") do |csv|
    to_csv(csv)
  end
end