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/date_helper.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: DateHelper, 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
-
#provides_celebration?(symbol) ⇒ Boolean
Does this instance provide celebration identified by symbol
symbol
?. -
#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.
23 24 25 26 27 28 29 30 31 |
# File 'lib/calendarium-romanum/temporale.rb', line 23 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)
34 35 36 |
# File 'lib/calendarium-romanum/temporale.rb', line 34 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.
80 81 82 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 |
# File 'lib/calendarium-romanum/temporale.rb', line 80 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.
64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/calendarium-romanum/temporale.rb', line 64 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
56 57 58 |
# File 'lib/calendarium-romanum/temporale.rb', line 56 def for_day(date) new(liturgical_year(date)) end |
.liturgical_year(date) ⇒ Integer
Determines liturgical year for the given date
41 42 43 44 45 46 47 48 49 |
# File 'lib/calendarium-romanum/temporale.rb', line 41 def liturgical_year(date) year = date.year if date < Dates.first_advent_sunday(year) return year - 1 end year end |
Instance Method Details
#==(b) ⇒ Boolean
349 350 351 352 353 354 |
# File 'lib/calendarium-romanum/temporale.rb', line 349 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
308 309 310 311 312 |
# File 'lib/calendarium-romanum/temporale.rb', line 308 def [](date) sw = season_and_week(date) @solemnities[date] || @feasts[date] || sunday(date, sw) || @memorials[date] || ferial(date, sw) end |
#ascension ⇒ Date
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
143 144 145 |
# File 'lib/calendarium-romanum/temporale.rb', line 143 def date_range start_date .. end_date end |
#each_day {|Date, Celebration| ... } ⇒ void, Enumerator
Enumerates dates and celebrations
341 342 343 344 345 |
# File 'lib/calendarium-romanum/temporale.rb', line 341 def each_day return to_enum(__method__) unless block_given? date_range.each {|date| yield date, self[date] } end |
#easter_sunday ⇒ Date
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
136 137 138 |
# File 'lib/calendarium-romanum/temporale.rb', line 136 def end_date Dates.first_advent_sunday(year + 1) - 1 end |
#epiphany ⇒ Date
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
322 323 324 325 326 327 328 329 330 331 332 333 334 |
# File 'lib/calendarium-romanum/temporale.rb', line 322 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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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 |
#provides_celebration?(symbol) ⇒ Boolean
Does this instance provide celebration identified by symbol symbol
?
361 362 363 |
# File 'lib/calendarium-romanum/temporale.rb', line 361 def provides_celebration?(symbol) @all_celebration_symbols.include? symbol 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.
153 154 155 156 157 158 159 160 |
# File 'lib/calendarium-romanum/temporale.rb', line 153 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
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/calendarium-romanum/temporale.rb', line 200 (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
223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 |
# File 'lib/calendarium-romanum/temporale.rb', line 223 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
255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 |
# File 'lib/calendarium-romanum/temporale.rb', line 255 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 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
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 |
# File 'lib/calendarium-romanum/temporale.rb', line 278 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
129 130 131 |
# File 'lib/calendarium-romanum/temporale.rb', line 129 def start_date first_advent_sunday end |
#transferred_to_sunday?(solemnity) ⇒ Boolean
Does this instance transfer the specified solemnity to Sunday?
122 123 124 |
# File 'lib/calendarium-romanum/temporale.rb', line 122 def transferred_to_sunday?(solemnity) @transfer_to_sunday.include?(solemnity) end |