Class: CalendariumRomanum::Temporale
- Inherits:
-
Object
- Object
- CalendariumRomanum::Temporale
- Defined in:
- lib/calendarium-romanum/temporale.rb,
lib/calendarium-romanum/temporale/dates.rb,
lib/calendarium-romanum/temporale/extensions.rb,
lib/calendarium-romanum/temporale/easter_table.rb,
lib/calendarium-romanum/temporale/celebration_factory.rb,
lib/calendarium-romanum/temporale/extensions/christ_eternal_priest.rb,
lib/calendarium-romanum/temporale/extensions/dedication_before_all_saints.rb
Overview
One of the two main Calendar components. Handles seasons and celebrations of the temporale cycle for a given liturgical year.
Defined Under Namespace
Modules: Dates, Extensions Classes: CelebrationFactory, EasterTable
Constant Summary collapse
- WEEK =
How many days in a week
7
- SUNDAY_TRANSFERABLE_SOLEMNITIES =
Which solemnities can be transferred to Sunday
%i(epiphany ascension corpus_christi).freeze
Instance Attribute Summary collapse
- #year ⇒ Integer readonly
Class Method Summary collapse
- .celebrations ⇒ Object private
-
.create_celebration(title, rank, colour, symbol: nil, date: nil, sunday: nil) ⇒ Object
Factory method creating temporale Celebrations with sensible defaults.
-
.for_day(date) ⇒ Temporale
Creates an instance for the liturgical year including given date.
-
.liturgical_year(date) ⇒ Integer
Determines liturgical year for the given date.
Instance Method Summary collapse
- #==(b) ⇒ Boolean
-
#[](date) ⇒ Celebration
Retrieve temporale celebration for the given day.
- #ascension ⇒ Date
- #ash_wednesday ⇒ Date
- #baptism_of_lord ⇒ Date
- #christ_king ⇒ Date
- #corpus_christi ⇒ Date
-
#date_range ⇒ Range<Date>
Date range of the liturgical year.
-
#each_day {|Date, Celebration| ... } ⇒ void, Enumerator
Enumerates dates and celebrations.
- #easter_sunday ⇒ Date
-
#end_date ⇒ Date
Last day of the liturgical year.
- #epiphany ⇒ Date
- #first_advent_sunday ⇒ Date
-
#get(*args) ⇒ Celebration
Retrieve temporale celebration for the given day.
- #good_friday ⇒ Date
- #holy_family ⇒ Date
- #holy_saturday ⇒ Date
- #holy_trinity ⇒ Date
- #immaculate_heart ⇒ Date
-
#initialize(year, extensions: [], transfer_to_sunday: []) ⇒ Temporale
constructor
A new instance of Temporale.
- #mother_of_church ⇒ Date
- #mother_of_god ⇒ Date
- #nativity ⇒ Date
- #palm_sunday ⇒ Date
- #pentecost ⇒ Date
-
#range_check(date) ⇒ void
Check that the date belongs to the liturgical year.
- #sacred_heart ⇒ Date
-
#season(date) ⇒ Season
Determine liturgical season for a given date.
-
#season_beginning(s) ⇒ Date
When the specified liturgical season begins.
-
#season_week(seasonn, date) ⇒ Object
Determine week of a season for a given date.
-
#start_date ⇒ Date
First day of the liturgical year.
-
#transferred_to_sunday?(solemnity) ⇒ Boolean
Does this instance transfer the specified solemnity to Sunday?.
Constructor Details
#initialize(year, extensions: [], transfer_to_sunday: []) ⇒ Temporale
Returns a new instance of Temporale.
25 26 27 28 29 30 31 32 33 |
# File 'lib/calendarium-romanum/temporale.rb', line 25 def initialize(year, extensions: [], transfer_to_sunday: []) @year = year @extensions = extensions @transfer_to_sunday = transfer_to_sunday.sort validate_sunday_transfer! prepare_solemnities end |
Instance Attribute Details
#year ⇒ Integer (readonly)
36 37 38 |
# File 'lib/calendarium-romanum/temporale.rb', line 36 def year @year end |
Class Method Details
.celebrations ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/calendarium-romanum/temporale.rb', line 83 def celebrations @celebrations ||= begin %i( nativity holy_family mother_of_god epiphany baptism_of_lord ash_wednesday good_friday holy_saturday palm_sunday easter_sunday ascension pentecost holy_trinity corpus_christi mother_of_church sacred_heart christ_king immaculate_heart ).collect do |symbol| date_method = symbol C.new( date_method, CelebrationFactory.public_send(symbol) ) end # Immaculate Heart of Mary and Mary, Mother of the Church # are actually movable *sanctorale* feasts, # but as it would make little sense # to add support for movable sanctorale feasts because of # two, we cheat a bit and handle them in temporale. end end |
.create_celebration(title, rank, colour, symbol: nil, date: nil, sunday: nil) ⇒ Object
Factory method creating temporale Celebrations with sensible defaults
See Celebration#initialize for argument description.
67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/calendarium-romanum/temporale.rb', line 67 def create_celebration(title, rank, colour, symbol: nil, date: nil, sunday: nil) Celebration.new( title: title, rank: rank, colour: colour, symbol: symbol, date: date, cycle: :temporale, sunday: sunday ) end |
.for_day(date) ⇒ Temporale
Creates an instance for the liturgical year including given date
59 60 61 |
# File 'lib/calendarium-romanum/temporale.rb', line 59 def for_day(date) new(liturgical_year(date)) end |
.liturgical_year(date) ⇒ Integer
Determines liturgical year for the given date
43 44 45 46 47 48 49 50 51 52 |
# File 'lib/calendarium-romanum/temporale.rb', line 43 def liturgical_year(date) year = date.year temporale = Temporale.new year if date < temporale.first_advent_sunday return year - 1 end year end |
Instance Method Details
#==(b) ⇒ Boolean
350 351 352 353 354 355 |
# File 'lib/calendarium-romanum/temporale.rb', line 350 def ==(b) self.class == b.class && year == b.year && transfer_to_sunday == b.transfer_to_sunday && Set.new(extensions) == Set.new(b.extensions) end |
#[](date) ⇒ Celebration
Retrieve temporale celebration for the given day
311 312 313 |
# File 'lib/calendarium-romanum/temporale.rb', line 311 def [](date) @solemnities[date] || @feasts[date] || sunday(date) || @memorials[date] || ferial(date) end |
#ascension ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#ash_wednesday ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#baptism_of_lord ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#christ_king ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#corpus_christi ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#date_range ⇒ Range<Date>
Date range of the liturgical year
146 147 148 |
# File 'lib/calendarium-romanum/temporale.rb', line 146 def date_range start_date .. end_date end |
#each_day {|Date, Celebration| ... } ⇒ void, Enumerator
Enumerates dates and celebrations
342 343 344 345 346 |
# File 'lib/calendarium-romanum/temporale.rb', line 342 def each_day return to_enum(__method__) unless block_given? date_range.each {|date| yield date, self[date] } end |
#easter_sunday ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#end_date ⇒ Date
Last day of the liturgical year
139 140 141 |
# File 'lib/calendarium-romanum/temporale.rb', line 139 def end_date Dates.first_advent_sunday(year + 1) - 1 end |
#epiphany ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#first_advent_sunday ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#get(date) ⇒ Celebration #get(month, day) ⇒ Celebration
Retrieve temporale celebration for the given day
323 324 325 326 327 328 329 330 331 332 333 334 335 |
# File 'lib/calendarium-romanum/temporale.rb', line 323 def get(*args) if args.size == 1 && args[0].is_a?(Date) date = args[0] else month, day = args date = Date.new @year, month, day unless date_range.include? date date = Date.new @year + 1, month, day end end self[date] end |
#good_friday ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#holy_family ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#holy_saturday ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#holy_trinity ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#immaculate_heart ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#mother_of_church ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#mother_of_god ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#nativity ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#palm_sunday ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#pentecost ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#range_check(date) ⇒ void
This method returns an undefined value.
Check that the date belongs to the liturgical year. If it does not, throw exception.
156 157 158 159 160 161 162 163 |
# File 'lib/calendarium-romanum/temporale.rb', line 156 def range_check(date) # necessary in order to handle Date correctly date = date.to_date if date.class != Date unless date_range.include? date raise RangeError.new "Date out of range #{date}" end end |
#sacred_heart ⇒ Date
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/calendarium-romanum/temporale.rb', line 203 (celebrations.collect(&:date_method) + [:first_advent_sunday]) .each do |feast| if SUNDAY_TRANSFERABLE_SOLEMNITIES.include? feast define_method feast do Dates.public_send feast, year, sunday: transferred_to_sunday?(feast) end elsif feast == :baptism_of_lord define_method feast do Dates.public_send feast, year, epiphany_on_sunday: transferred_to_sunday?(:epiphany) end else define_method feast do Dates.public_send feast, year end end end |
#season(date) ⇒ Season
Determine liturgical season for a given date
226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
# File 'lib/calendarium-romanum/temporale.rb', line 226 def season(date) range_check date if first_advent_sunday <= date && nativity > date Seasons::ADVENT elsif nativity <= date && baptism_of_lord >= date Seasons::CHRISTMAS elsif ash_wednesday <= date && good_friday > date Seasons::LENT elsif good_friday <= date && easter_sunday >= date Seasons::TRIDUUM elsif easter_sunday < date && pentecost >= date Seasons::EASTER else Seasons::ORDINARY end end |
#season_beginning(s) ⇒ Date
When the specified liturgical season begins
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 |
# File 'lib/calendarium-romanum/temporale.rb', line 258 def season_beginning(s) case s when Seasons::ADVENT first_advent_sunday when Seasons::CHRISTMAS nativity when Seasons::LENT ash_wednesday when Seasons::TRIDUUM good_friday when Seasons::EASTER easter_sunday + 1 when Seasons::ORDINARY # ordinary time baptism_of_lord + 1 else raise ArgumentError.new('unsupported season') end end |
#season_week(seasonn, date) ⇒ Object
Determine week of a season for a given date
281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 |
# File 'lib/calendarium-romanum/temporale.rb', line 281 def season_week(seasonn, date) week1_beginning = season_beginning = season_beginning(seasonn) unless season_beginning.sunday? week1_beginning = Dates.sunday_after(season_beginning) end week = date_difference(date, week1_beginning) / WEEK + 1 if seasonn == Seasons::ORDINARY || seasonn == Seasons::EASTER # ordinary time does not begin with Sunday, but the first week # is week 1, not 0 week += 1 end if seasonn == Seasons::ORDINARY if date > pentecost weeks_after_date = date_difference(Dates.first_advent_sunday(@year + 1), date) / WEEK week = 34 - weeks_after_date week += 1 if date.sunday? end end week end |
#start_date ⇒ Date
First day of the liturgical year
132 133 134 |
# File 'lib/calendarium-romanum/temporale.rb', line 132 def start_date first_advent_sunday end |
#transferred_to_sunday?(solemnity) ⇒ Boolean
Does this instance transfer the specified solemnity to Sunday?
125 126 127 |
# File 'lib/calendarium-romanum/temporale.rb', line 125 def transferred_to_sunday?(solemnity) @transfer_to_sunday.include?(solemnity) end |