Class: CalendariumRomanum::Sanctorale
- Inherits:
-
Object
- Object
- CalendariumRomanum::Sanctorale
- Defined in:
- lib/calendarium-romanum/sanctorale.rb
Overview
knows the fixed-date celebrations
Instance Attribute Summary collapse
-
#solemnities ⇒ Object
readonly
Returns the value of attribute solemnities.
Instance Method Summary collapse
- #add(month, day, celebration) ⇒ Object
-
#each_day ⇒ Object
for each day for which an entry is available yields an AbstractDate and an Array of Celebrations.
- #empty? ⇒ Boolean
-
#get(*args) ⇒ Object
returns an Array with one or more Celebrations scheduled for the given day.
-
#initialize ⇒ Sanctorale
constructor
A new instance of Sanctorale.
-
#replace(month, day, celebrations) ⇒ Object
replaces content of the given day by given celebrations.
-
#size ⇒ Object
returns count of the days with celebrations filled.
-
#update(sanctorale) ⇒ Object
adds all Celebrations from another instance.
Constructor Details
#initialize ⇒ Sanctorale
Returns a new instance of Sanctorale.
6 7 8 9 10 |
# File 'lib/calendarium-romanum/sanctorale.rb', line 6 def initialize @days = {} @solemnities = {} end |
Instance Attribute Details
#solemnities ⇒ Object (readonly)
Returns the value of attribute solemnities
12 13 14 |
# File 'lib/calendarium-romanum/sanctorale.rb', line 12 def solemnities @solemnities end |
Instance Method Details
#add(month, day, celebration) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/calendarium-romanum/sanctorale.rb', line 14 def add(month, day, celebration) date = AbstractDate.new(month, day) unless @days.has_key? date @days[date] = [] end if celebration.solemnity? @solemnities[date] = celebration end unless @days[date].empty? present = @days[date][0] if present.rank != Ranks::MEMORIAL_OPTIONAL raise ArgumentError.new("On #{date} there is already a #{present.rank}. No more celebrations can be added.") elsif celebration.rank != Ranks::MEMORIAL_OPTIONAL raise ArgumentError.new("Celebration of rank #{celebration.rank} cannot be grouped, but there is already another celebration on #{date}") end end @days[date] << celebration end |
#each_day ⇒ Object
for each day for which an entry is available yields an AbstractDate and an Array of Celebrations
74 75 76 77 78 |
# File 'lib/calendarium-romanum/sanctorale.rb', line 74 def each_day @days.each_pair do |date, celebrations| yield date, celebrations end end |
#empty? ⇒ Boolean
85 86 87 |
# File 'lib/calendarium-romanum/sanctorale.rb', line 85 def empty? @days.empty? end |
#get(*args) ⇒ Object
returns an Array with one or more Celebrations scheduled for the given day
expected arguments: Date or two Integers (month, day)
60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/calendarium-romanum/sanctorale.rb', line 60 def get(*args) if args.size == 1 && args[0].is_a?(Date) month = args[0].month day = args[0].day else month, day = args end date = AbstractDate.new(month, day) return @days[date] || [] end |
#replace(month, day, celebrations) ⇒ Object
replaces content of the given day by given celebrations
37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/calendarium-romanum/sanctorale.rb', line 37 def replace(month, day, celebrations) date = AbstractDate.new(month, day) if celebrations.first.solemnity? @solemnities[date] = celebrations.first elsif @solemnities.has_key? date @solemnities.delete date end @days[date] = celebrations end |
#size ⇒ Object
returns count of the days with celebrations filled
81 82 83 |
# File 'lib/calendarium-romanum/sanctorale.rb', line 81 def size @days.size end |
#update(sanctorale) ⇒ Object
adds all Celebrations from another instance
50 51 52 53 54 |
# File 'lib/calendarium-romanum/sanctorale.rb', line 50 def update(sanctorale) sanctorale.each_day do |date, celebrations| replace date.month, date.day, celebrations end end |