Class: CalendariumRomanum::Temporale
- Inherits:
-
Object
- Object
- CalendariumRomanum::Temporale
show all
- Defined in:
- lib/calendarium-romanum/temporale.rb,
lib/calendarium-romanum/temporale/dates.rb,
lib/calendarium-romanum/temporale/celebration_factory.rb,
lib/calendarium-romanum/temporale/extensions/christ_eternal_priest.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
Constant Summary
collapse
- WEEK =
7
- SUNDAY_TRANSFERABLE_SOLEMNITIES =
Which solemnities can be transferred to Sunday
%i(epiphany ascension corpus_christi).freeze
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
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 ⇒ Fixnum
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.
75
76
77
78
79
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
|
# File 'lib/calendarium-romanum/temporale.rb', line 75
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
end
end
|
.create_celebration(title, rank, colour, symbol: nil, date: nil) ⇒ Object
67
68
69
|
# File 'lib/calendarium-romanum/temporale.rb', line 67
def create_celebration(title, rank, colour, symbol: nil, date: nil)
Celebration.new(title, rank, colour, symbol, date, :temporale)
end
|
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) ⇒ Fixnum
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
323
324
325
326
327
328
|
# File 'lib/calendarium-romanum/temporale.rb', line 323
def ==(b)
self.class == b.class &&
year == b.year &&
transfer_to_sunday == b.transfer_to_sunday &&
Set.new(extensions) == Set.new(b.extensions)
end
|
Retrieve temporale celebration for the given day
295
296
297
|
# File 'lib/calendarium-romanum/temporale.rb', line 295
def [](date)
@solemnities[date] || @feasts[date] || sunday(date) || @memorials[date] || ferial(date)
end
|
#ascension ⇒ Date
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
138
139
140
|
# File 'lib/calendarium-romanum/temporale.rb', line 138
def date_range
start_date .. end_date
end
|
#easter_sunday ⇒ Date
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
131
132
133
|
# File 'lib/calendarium-romanum/temporale.rb', line 131
def end_date
Dates.first_advent_sunday(year + 1) - 1
end
|
#epiphany ⇒ Date
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
|
Retrieve temporale celebration for the given day
307
308
309
310
311
312
313
314
315
316
317
318
319
|
# File 'lib/calendarium-romanum/temporale.rb', line 307
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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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.
148
149
150
151
152
153
154
155
|
# File 'lib/calendarium-romanum/temporale.rb', line 148
def range_check(date)
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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
# File 'lib/calendarium-romanum/temporale.rb', line 195
(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
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
|
# File 'lib/calendarium-romanum/temporale.rb', line 218
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) &&
easter_sunday > date
Seasons::LENT
elsif (easter_sunday <= date) &&
(pentecost >= date)
Seasons::EASTER
else
Seasons::ORDINARY
end
end
|
#season_beginning(s) ⇒ Date
When the specified liturgical season begins
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
|
# File 'lib/calendarium-romanum/temporale.rb', line 246
def season_beginning(s)
case s
when Seasons::ADVENT
first_advent_sunday
when Seasons::CHRISTMAS
nativity
when Seasons::LENT
ash_wednesday
when Seasons::EASTER
easter_sunday
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
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
|
# File 'lib/calendarium-romanum/temporale.rb', line 267
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
week += 1
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
124
125
126
|
# File 'lib/calendarium-romanum/temporale.rb', line 124
def start_date
first_advent_sunday
end
|
#transferred_to_sunday?(solemnity) ⇒ Boolean
Does this instance transfer the specified solemnity to Sunday?
117
118
119
|
# File 'lib/calendarium-romanum/temporale.rb', line 117
def transferred_to_sunday?(solemnity)
@transfer_to_sunday.include?(solemnity)
end
|