Class: Noventius::PostProcessors::DateRanges

Inherits:
Object
  • Object
show all
Defined in:
lib/noventius/post_processors/date_ranges.rb

Defined Under Namespace

Classes: BaseRange, DayRange, MonthRange

Constant Summary collapse

DAY =
:day
MONTH =
:month
HOUR =
:hour
DAY_OF_WEEK =
:dow
MONTH_OF_YEAR =
:moy
STEPS =
[DAY, MONTH, HOUR, DAY_OF_WEEK, MONTH_OF_YEAR]
DATE_STEPS =
[DAY, MONTH]

Instance Method Summary collapse

Constructor Details

#initialize(column_index_or_name, step, time_zone = 'America/Montevideo') ⇒ DateRanges

Returns a new instance of DateRanges.



16
17
18
19
20
21
22
# File 'lib/noventius/post_processors/date_ranges.rb', line 16

def initialize(column_index_or_name, step, time_zone = 'America/Montevideo')
  fail ArgumentError, "Step not supported [#{step}]." unless STEPS.include?(step.to_sym)

  @column_index_or_name = column_index_or_name
  @step = step.to_sym
  @time_zone = time_zone
end

Instance Method Details

#process(report, rows) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/noventius/post_processors/date_ranges.rb', line 24

def process(report, rows)
  return [] if rows.empty?

  rows_by_date = group_rows_by_date(report, rows)

  start_date = rows_by_date.keys.min
  end_date = rows_by_date.keys.max

  empty_row = build_empty_row(report)

  build_range(start_date, end_date).map do |value|
    rows_by_date.fetch(value, [value].concat(empty_row))
  end
end