7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/hledger_forecast/summarizer.rb', line 7
def summarize(csv_string, cli_options = nil)
forecast = Forecast.parse(csv_string, cli_options)
transactions = forecast.transactions.reject(&:summary_exclude?)
if cli_options&.dig(:tags)
raise "The --tags option requires a 'tag' column in the forecast CSV" unless forecast.has_tags_column?
transactions = transactions.select { |t| t.matches_tags?(cli_options[:tags]) }
end
output = transactions.map { |t| build_summary_row(t) }
output = apply_roll_up(output, forecast.settings.roll_up) if forecast.settings.roll_up
{output: output, settings: forecast.settings}
end
|