Class: HolidaysFromGoogleCalendar::Cache

Inherits:
Object
  • Object
show all
Defined in:
lib/holidays_from_google_calendar/cache.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(enable: nil, max_size: nil) ⇒ Cache

Returns a new instance of Cache.



5
6
7
8
9
10
# File 'lib/holidays_from_google_calendar/cache.rb', line 5

def initialize(enable: nil, max_size: nil)
  @enable = enable
  @max_size = max_size
  @container = []
  calculate_size
end

Instance Attribute Details

#sizeObject (readonly)

Returns the value of attribute size.



3
4
5
# File 'lib/holidays_from_google_calendar/cache.rb', line 3

def size
  @size
end

Instance Method Details

#cache(holidays, date_min, date_max) ⇒ Object



16
17
18
19
# File 'lib/holidays_from_google_calendar/cache.rb', line 16

def cache(holidays, date_min, date_max)
  pack_container(CacheUnit.new(holidays.dup, date_min, date_max))
  page_out if calculate_size > @max_size
end

#enabled?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/holidays_from_google_calendar/cache.rb', line 12

def enabled?
  @enable
end

#retrieve(date_min, date_max) ⇒ Object



21
22
23
24
25
26
27
28
29
30
# File 'lib/holidays_from_google_calendar/cache.rb', line 21

def retrieve(date_min, date_max)
  unit = @container.find { |e| e.include?(date_min, date_max) }
  return nil if unit.nil?

  # For LRU (Least Recently Used)
  @container.delete(unit)
  @container.push(unit)

  unit.retrieve(date_min, date_max)
end