Class: TotalRecall::Config
- Inherits:
-
Object
- Object
- TotalRecall::Config
- Defined in:
- lib/total_recall.rb
Instance Method Summary collapse
- #config ⇒ Object
- #context ⇒ Object
- #csv ⇒ Object
- #csv_file ⇒ Object
-
#initialize(options = {}) ⇒ Config
constructor
A new instance of Config.
- #ledger ⇒ Object
- #session ⇒ Object
- #template ⇒ Object
- #template_file ⇒ Object
- #transaction_defaults ⇒ Object
- #transactions ⇒ Object
- #transactions_config ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Config
64 65 66 67 |
# File 'lib/total_recall.rb', line 64 def initialize( = {}) = {file: 'total_recall.yml'}.merge() @config_file = File.([:file]) end |
Instance Method Details
#config ⇒ Object
69 70 71 |
# File 'lib/total_recall.rb', line 69 def config @config ||= YAML.load_file(@config_file) end |
#context ⇒ Object
100 101 102 |
# File 'lib/total_recall.rb', line 100 def context @context ||= config[:context].merge(transactions: transactions) end |
#csv ⇒ Object
78 79 80 81 82 83 |
# File 'lib/total_recall.rb', line 78 def csv @csv ||= begin csv_raw = csv_file ? File.read(csv_file) : config[:csv][:raw] CSV.parse(csv_raw, config[:csv][:options] || {}) end end |
#csv_file ⇒ Object
73 74 75 76 |
# File 'lib/total_recall.rb', line 73 def csv_file config[:csv][:file] && File.(config[:csv][:file], File.dirname(@config_file)) end |
#ledger ⇒ Object
128 129 130 |
# File 'lib/total_recall.rb', line 128 def ledger Mustache.render(template, context) end |
#session ⇒ Object
96 97 98 |
# File 'lib/total_recall.rb', line 96 def session @session ||= Helper.new(config) end |
#template ⇒ Object
90 91 92 93 94 |
# File 'lib/total_recall.rb', line 90 def template @template ||= begin template_file ? File.read(template_file) : config[:template][:raw] end end |
#template_file ⇒ Object
85 86 87 88 |
# File 'lib/total_recall.rb', line 85 def template_file config[:template][:file] && File.(config[:template][:file], File.dirname(@config_file)) end |
#transaction_defaults ⇒ Object
115 116 117 118 119 120 121 122 |
# File 'lib/total_recall.rb', line 115 def transaction_defaults @transaction_defaults ||= begin defaults = transactions_config[:__defaults__] || {} defaults.each_with_object({}) do |(k,v), result| result[k] = v.respond_to?(:call) ? session.with_row(nil, &v) : v end end end |
#transactions ⇒ Object
104 105 106 107 108 109 110 111 112 113 |
# File 'lib/total_recall.rb', line 104 def transactions @transactions ||= begin csv.each_with_object([]) do |row, result| result << transaction_defaults.merge(transactions_config).each_with_object({}) do |(k,v), cfg| next if k[/^__/] cfg[k] = v.respond_to?(:call) ? session.with_row(row, &v) : v end end end end |
#transactions_config ⇒ Object
124 125 126 |
# File 'lib/total_recall.rb', line 124 def transactions_config config[:context][:transactions] end |