Class: Holidays::Finder::Context::YearHoliday
- Inherits:
-
Object
- Object
- Holidays::Finder::Context::YearHoliday
- Defined in:
- lib/holidays/finder/context/year_holiday.rb
Instance Method Summary collapse
- #call(from_date, options) ⇒ Object
-
#initialize(definition_search, dates_driver_builder, options_parser) ⇒ YearHoliday
constructor
A new instance of YearHoliday.
Constructor Details
#initialize(definition_search, dates_driver_builder, options_parser) ⇒ YearHoliday
Returns a new instance of YearHoliday.
5 6 7 8 9 |
# File 'lib/holidays/finder/context/year_holiday.rb', line 5 def initialize(definition_search, dates_driver_builder, ) @definition_search = definition_search @dates_driver_builder = dates_driver_builder @options_parser = end |
Instance Method Details
#call(from_date, options) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/holidays/finder/context/year_holiday.rb', line 11 def call(from_date, ) validate!(from_date) regions, observed, informal = @options_parser.call() # This could be smarter but I don't have any evidence that just checking for # the next 12 months will cause us issues. If it does we can implement something # smarter here to check in smaller increments. # #FIXME Could this be until the to_date instead? Save us some processing? # This is matching what was in holidays.rb currently so I'm keeping it. -pp dates_driver = @dates_driver_builder.call(from_date, from_date >> 12) to_date = Date.civil(from_date.year, 12, 31) holidays = [] ret_holidays = [] opts = (observed, informal) ret_holidays = @definition_search.call(dates_driver, regions, opts) ret_holidays.each do |holiday| if holiday[:date] >= from_date && holiday[:date] <= to_date holidays << holiday end end holidays.sort{|a, b| a[:date] <=> b[:date] } end |