class Feriados::Calendar
Attributes
Public Class Methods
Public Instance Methods
Source
# File lib/feriados/calendar.rb, line 71 def eql?(other) rules == other.rules end
Source
# File lib/feriados/calendar.rb, line 10 def holiday?(date) rules.any? { |rule| rule.holiday?(date) } end
Source
# File lib/feriados/calendar.rb, line 14 def holiday_name(date) rules.find { |rule| rule.holiday?(date) }&.name end
Source
# File lib/feriados/calendar.rb, line 36 def holidays_between(start_date, end_date) holidays = [] current_date = start_date while current_date <= end_date if holiday?(current_date) holidays << { date: current_date, name: holiday_name(current_date) } end current_date += 1 end holidays end
Source
# File lib/feriados/calendar.rb, line 30 def holidays_in_year(year) start_date = Date.new(year, 1, 1) end_date = Date.new(year, 12, 31) holidays_between(start_date, end_date) end
Source
# File lib/feriados/calendar.rb, line 26 def load(rules) Loader.new(rules, self).load end
Source
# File lib/feriados/calendar.rb, line 53 def next_holiday(from_date = Date.today) # Search in the next 2 years to ensure finding at least one holiday end_search_date = Date.new(from_date.year + 2, 12, 31) current_date = from_date while current_date <= end_search_date if holiday?(current_date) return { date: current_date, name: holiday_name(current_date) } end current_date += 1 end nil # No holidays found in the range end
Source
# File lib/feriados/calendar.rb, line 22 def remove(rule) rules.delete(rule) end