Class: Holidays::Definition::Repository::Cache
- Inherits:
-
Object
- Object
- Holidays::Definition::Repository::Cache
- Defined in:
- lib/holidays/definition/repository/cache.rb
Instance Method Summary collapse
- #cache_between(start_date, end_date, cache_data, options) ⇒ Object
- #find(start_date, end_date, options) ⇒ Object
-
#initialize ⇒ Cache
constructor
A new instance of Cache.
- #reset! ⇒ Object
Constructor Details
#initialize ⇒ Cache
Returns a new instance of Cache.
5 6 7 |
# File 'lib/holidays/definition/repository/cache.rb', line 5 def initialize reset! end |
Instance Method Details
#cache_between(start_date, end_date, cache_data, options) ⇒ Object
9 10 11 12 13 14 15 |
# File 'lib/holidays/definition/repository/cache.rb', line 9 def cache_between(start_date, end_date, cache_data, ) raise ArgumentError unless cache_data raise ArgumentError unless start_date && end_date @cache_range[] = start_date..end_date @cache[] = cache_data.group_by { |holiday| holiday[:date] } end |
#find(start_date, end_date, options) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/holidays/definition/repository/cache.rb', line 17 def find(start_date, end_date, ) return nil unless in_cache_range?(start_date, end_date, ) if start_date == end_date @cache[].fetch(start_date, []) else @cache[].select do |date, holidays| date >= start_date && date <= end_date end.flat_map { |date, holidays| holidays } end end |
#reset! ⇒ Object
29 30 31 32 |
# File 'lib/holidays/definition/repository/cache.rb', line 29 def reset! @cache = {} @cache_range = {} end |