Class: CalendariumRomanum::Calendar

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/calendarium-romanum/calendar.rb

Overview

Provides complete information concerning a liturgical year, it's days and celebrations occurring on them.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(year, sanctorale = nil, temporale_class = nil) ⇒ Calendar

year: Integer returns a calendar for the liturgical year beginning with Advent of the specified civil year.


15
16
17
18
19
20
21
# File 'lib/calendarium-romanum/calendar.rb', line 15

def initialize(year, sanctorale=nil, temporale_class=nil)
  @year = year
  @sanctorale = sanctorale || Sanctorale.new
  @temporale_class = temporale_class || Temporale
  @temporale = @temporale_class.new(year)
  @transferred = Transfers.new(@temporale, @sanctorale)
end

Instance Attribute Details

#sanctoraleObject (readonly)

Returns the value of attribute sanctorale


57
58
59
# File 'lib/calendarium-romanum/calendar.rb', line 57

def sanctorale
  @sanctorale
end

#temporaleObject (readonly)

Returns the value of attribute temporale


56
57
58
# File 'lib/calendarium-romanum/calendar.rb', line 56

def temporale
  @temporale
end

#yearObject (readonly)

Returns the value of attribute year


55
56
57
# File 'lib/calendarium-romanum/calendar.rb', line 55

def year
  @year
end

Class Method Details

.for_day(date, *constructor_args) ⇒ Object

creates a Calendar for the liturgical year including given date


49
50
51
# File 'lib/calendarium-romanum/calendar.rb', line 49

def for_day(date, *constructor_args)
  return new(Temporale.liturgical_year(date), *constructor_args)
end

.mk_date(*args) ⇒ Object


24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/calendarium-romanum/calendar.rb', line 24

def mk_date(*args)
  ex = TypeError.new('Date, DateTime or three Integers expected')

  if args.size == 3 then
    args.each do |a|
      unless a.is_a? Integer
        raise ex
      end
    end
    return Date.new *args

  elsif args.size == 1 then
    a = args.first
    unless a.is_a? Date
      raise ex
    end
    return a

  else
    raise ex
  end
end

Instance Method Details

#==(obj) ⇒ Object


71
72
73
74
75
76
77
# File 'lib/calendarium-romanum/calendar.rb', line 71

def ==(obj)
  unless obj.is_a? Calendar
    return false
  end

  return year == obj.year
end

#celebrations_for(date) ⇒ Object


113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/calendarium-romanum/calendar.rb', line 113

def celebrations_for(date)
  tr = @transferred.get(date)
  return [tr] if tr

  t = @temporale.get date
  st = @sanctorale.get date

  unless st.empty?
    if st.first.rank > t.rank
      if st.first.rank == Ranks::MEMORIAL_OPTIONAL
        st.unshift t
        return st
      else
        return st
      end
    elsif t.rank == Ranks::FERIAL_PRIVILEGED && st.first.rank.memorial?
      st = st.collect do |c|
        Celebration.new(c.title, Ranks::COMMEMORATION, t.colour)
      end
      st.unshift t
      return st
    end
  end

  return [t]
end

#day(*args) ⇒ Object

accepts date information represented as Date, DateTime, or two to three integers (month - day or year - month - day); returns filled Day for the specified day


83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/calendarium-romanum/calendar.rb', line 83

def day(*args)
  if args.size == 2
    date = Date.new(@year, *args)
    unless @temporale.date_range.include? date
      date = Date.new(@year + 1, *args)
    end
  else
    date = self.class.mk_date *args
    range_check date
  end

  s = @temporale.season(date)
  return Day.new(
                 date: date,
                 season: s,
                 season_week: @temporale.season_week(s, date),
                 celebrations: celebrations_for(date)
                )
end

#ferial_lectionaryObject

Ferial lectionary cycle


109
110
111
# File 'lib/calendarium-romanum/calendar.rb', line 109

def ferial_lectionary
  @year % 2 + 1
end

#lectionaryObject

Sunday lectionary cycle


104
105
106
# File 'lib/calendarium-romanum/calendar.rb', line 104

def lectionary
  LECTIONARY_CYCLES[@year % 3]
end

#predObject

returns a Calendar for the previous year


66
67
68
69
# File 'lib/calendarium-romanum/calendar.rb', line 66

def pred
  c = Calendar.new @year - 1, @sanctorale, @temporale_class
  return c
end

#succObject

returns a Calendar for the subsequent year


60
61
62
63
# File 'lib/calendarium-romanum/calendar.rb', line 60

def succ
  c = Calendar.new @year + 1, @sanctorale, @temporale_class
  return c
end