module Chinese::Holidays
Constants
- VERSION
Public Class Methods
all()
click to toggle source
List all holidays
# File lib/chinese/holidays.rb, line 9 def self.all self.events.select {|event| event.type == 'holiday'} end
event(date)
click to toggle source
# File lib/chinese/holidays.rb, line 29 def self.event(date) if date.is_a? Date self.load_holidays[date] elsif date.respond_to? :to_date self.load_holidays[date.to_date] end end
is_holiday?(date)
click to toggle source
# File lib/chinese/holidays.rb, line 13 def self.is_holiday?(date) event = self.event(date) return self.weekend?(self.to_date(date)) if event.nil? event.holiday? end
is_workingday?(date)
click to toggle source
# File lib/chinese/holidays.rb, line 21 def self.is_workingday?(date) event = self.event(date) return !self.weekend?(self.to_date(date)) if event.nil? event.workingday? end
Private Class Methods
events()
click to toggle source
# File lib/chinese/holidays.rb, line 52 def self.events @events ||= Dir.glob(File.expand_path('../holidays/data/*.json', __FILE__)).flat_map do |file| days_of_year = File.open(file) { |f| JSON.parse(f.read) } days_of_year.map do |days| Days.new(days['name'], days['range'], days['type']) end end end
load_holidays()
click to toggle source
# File lib/chinese/holidays.rb, line 61 def self.load_holidays @books ||= begin books = {} self.events.each do |event| event.days.each do |day| books[day] = event end end books end end
to_date(date)
click to toggle source
# File lib/chinese/holidays.rb, line 38 def self.to_date(date) if date.is_a? Date date elsif date.respond_to? :to_date date.to_date else date end end
weekend?(date)
click to toggle source
# File lib/chinese/holidays.rb, line 48 def self.weekend?(date) date.wday == 6 || date.wday == 0 end