calendarium-romanum 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
metadata ADDED
@@ -0,0 +1,231 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: calendarium-romanum
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jakub Pavlík
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-08-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.14'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.14'
27
+ description: |
28
+ # calendarium-romanum
29
+
30
+ [![Build Status](https://travis-ci.org/igneus/calendarium-romanum.svg?branch=master)](https://travis-ci.org/igneus/calendarium-romanum)
31
+
32
+ [API documentation](http://www.rubydoc.info/github/igneus/calendarium-romanum/master)
33
+
34
+ Ruby gem for
35
+ calendar computations according to the Roman Catholic liturgical
36
+ calendar as instituted by
37
+ MP Mysterii Paschalis of Paul VI. ([AAS 61 (1969)](http://www.vatican.va/archive/aas/documents/AAS-61-1969-ocr.pdf), pp. 222-226).
38
+ The rules are defined in General Norms for the Liturgical Year
39
+ and the Calendar
40
+ ([English translation](https://www.ewtn.com/library/CURIA/CDWLITYR.HTM)).
41
+
42
+ ## Features
43
+
44
+ - [x] liturgical season
45
+ - [x] Sundays, temporale feasts
46
+ - [x] sanctorale calendars: data format, example data files, their loading
47
+ - [x] resolution of precedence of concurrent celebrations
48
+ - [x] octave days
49
+ - [ ] commemorations in the privileged seasons where memorials are suppressed
50
+ - [x] transfer of suppressed solemnities
51
+ - [ ] additional temporale feasts (Christ the Eternal Priest and similar)
52
+ - [ ] optional transfer of important solemnities on a nearby Sunday
53
+
54
+ ## Credits
55
+
56
+ includes an important bit of code from the
57
+ [easter](https://github.com/jrobertson/easter) gem
58
+ by James Robertson
59
+
60
+ ## License
61
+
62
+ freely choose between GNU/LGPL 3 and MIT
63
+
64
+ ## Basic Usage
65
+
66
+ For more self-explaining, commented and copy-pastable
67
+ examples see the [examples directory](./examples/).
68
+
69
+ All the examples below expect that you first required the gem:
70
+
71
+ ```ruby
72
+ require 'calendarium-romanum'
73
+ ```
74
+
75
+ ### 1. What liturgical season is it today?
76
+
77
+ ```ruby
78
+ calendar = CalendariumRomanum::Calendar.for_day(Date.today)
79
+ day = calendar.day(Date.today)
80
+ day.season # => :ordinary
81
+ ```
82
+
83
+ `Day#season` returns a `Symbol` representing the current liturgical
84
+ season.
85
+
86
+ ### 2. What liturgical day is it today?
87
+
88
+ `Day` has several other properties.
89
+ `Day#celebrations` returns an `Array` of `Celebration`s
90
+ that occur on the given day. Usually the `Array` has a single
91
+ element, but in case of optional celebrations (several optional
92
+ memorials occurring on a ferial) it may have two or more.
93
+
94
+ ```ruby
95
+ day.celebrations # => [#<CalendariumRomanum::Celebration:0x00000001741c78 @title="", @rank=#<struct CalendariumRomanum::Rank priority=3.13, desc="Unprivileged ferials", short_desc="ferial">, @colour=:green>]
96
+ ```
97
+
98
+ In this case the single `Celebration` available is a ferial,
99
+ described by it's title (empty in this case), rank and liturgical
100
+ colour.
101
+
102
+ ### 3. But does it take feasts of saints in account?
103
+
104
+ Actually, no. Not yet. We need to load some calendar data first:
105
+
106
+ ```ruby
107
+ sanctorale = CalendariumRomanum::Sanctorale.new
108
+ loader = CalendariumRomanum::SanctoraleLoader.new
109
+ loader.load_from_file sanctorale, 'data/universal-en.txt' # insert path to your data file
110
+ calendar = CalendariumRomanum::Calendar.for_day(Date.today, sanctorale)
111
+ day = calendar.day(Date.new(2016, 8, 19))
112
+ day.celebrations # => [#<CalendariumRomanum::Celebration:0x000000016ed330 @title="", @rank=#<struct CalendariumRomanum::Rank priority=3.13, desc="Unprivileged ferials", short_desc="ferial">, @colour=:green>, #<CalendariumRomanum::Celebration:0x00000001715790 @title="Saint John Eudes, priest", @rank=#<struct CalendariumRomanum::Rank priority=3.12, desc="Optional memorials", short_desc="optional memorial">, @colour=:white>]
113
+ ```
114
+
115
+ Unless a sanctorale is loaded, `Calendar` only counts with
116
+ temporale feasts, Sundays and ferials.
117
+
118
+ ## Sanctorale Data
119
+
120
+ ### Use prepared data or create your own
121
+
122
+ The gem expects data files following a custom format -
123
+ see README in the [data](/data) directory for it's description.
124
+ The same directory contains a bunch of example data files.
125
+
126
+ `universal-en.txt` and `universal-la.txt` are data of the General
127
+ Roman Calendar in English and Latin.
128
+
129
+ The other files, when layered properly, can be used to assemble
130
+ proper calendar of any diocese in the Czech Republic.
131
+ They were made for the author's practical purposes, but also
132
+ as an example of organization of structured calendar data.
133
+ Data for any other country could be prepared similarly.
134
+
135
+ There are three layers:
136
+
137
+ 1. country
138
+ 2. ecclesiastical province
139
+ 3. diocese
140
+
141
+ The tree of correct combinations looks like this:
142
+
143
+ * `czech-cs.txt`
144
+ * `czech-cechy-cs.txt`
145
+ * `czech-praha-cs.txt`
146
+ * `czech-hradec-cs.txt`
147
+ * `czech-litomerice-cs.txt`
148
+ * `czech-budejovice-cs.txt`
149
+ * `czech-plzen-cs.txt`
150
+ * `czech-morava-cs.txt`
151
+ * `czech-olomouc-cs.txt`
152
+ * `czech-brno-cs.txt`
153
+ * `czech-ostrava-cs.txt`
154
+
155
+ ### Implement custom loading strategy
156
+
157
+ In case you already have sanctorale data in another format,
158
+ it might be better suited for you to implement your own loading
159
+ routine instead of migrating them to our custom format.
160
+ `SanctoraleLoader` is the class to look into for inspiration.
161
+
162
+ The important bit is that for each celebration you
163
+ build a `Celebration` instance and push it in a `Sanctorale`
164
+ instance by a call to `Sanctorale#add`, which receives a month,
165
+ a day (as integers) and a `Celebration`:
166
+
167
+ ```ruby
168
+ include CalendariumRomanum
169
+ sanctorale = Sanctorale.new
170
+ celebration = Celebration.new('Saint John Eudes, priest', Ranks::MEMORIAL_OPTIONAL, Colours::WHITE)
171
+ sanctorale.add 8, 19, celebration
172
+ calendar = Calendar.for_day(Date.today, sanctorale)
173
+ ```
174
+
175
+ Now our `Sanctorale` knows one feast and the `Calendar` resolves
176
+ it correctly:
177
+
178
+ ```ruby
179
+ day = calendar.day(Date.new(2016, 8, 19))
180
+ day.celebrations # => [#<CalendariumRomanum::Celebration:0x000000010deea8 @title="", @rank=#<struct CalendariumRomanum::Rank priority=3.13, desc="Unprivileged ferials", short_desc="ferial">, @colour=:green>, #<CalendariumRomanum::Celebration:0x000000010fec08 @title="Saint John Eudes, priest", @rank=#<struct CalendariumRomanum::Rank priority=3.12, desc="Optional memorials", short_desc="optional memorial">, @colour=:white>]
181
+ ```
182
+ email: jkb.pavlik@gmail.com
183
+ executables: []
184
+ extensions: []
185
+ extra_rdoc_files: []
186
+ files:
187
+ - bin/calendariumrom
188
+ - lib/calendarium-romanum.rb
189
+ - lib/calendarium-romanum/day.rb
190
+ - lib/calendarium-romanum/calendar.rb
191
+ - lib/calendarium-romanum/util.rb
192
+ - lib/calendarium-romanum/sanctorale.rb
193
+ - lib/calendarium-romanum/transfers.rb
194
+ - lib/calendarium-romanum/enums.rb
195
+ - lib/calendarium-romanum/sanctoraleloader.rb
196
+ - lib/calendarium-romanum/abstract_date.rb
197
+ - lib/calendarium-romanum/temporale.rb
198
+ - spec/calendar_spec.rb
199
+ - spec/date_spec.rb
200
+ - spec/temporale_spec.rb
201
+ - spec/spec_helper.rb
202
+ - spec/abstract_date_spec.rb
203
+ - spec/rank_spec.rb
204
+ - spec/sanctoraleloader_spec.rb
205
+ - spec/sanctorale_spec.rb
206
+ homepage: http://github.com/igneus/calendarium-romanum
207
+ licenses:
208
+ - LGPL-3.0
209
+ - MIT
210
+ metadata: {}
211
+ post_install_message:
212
+ rdoc_options: []
213
+ require_paths:
214
+ - lib
215
+ required_ruby_version: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - ">="
218
+ - !ruby/object:Gem::Version
219
+ version: '0'
220
+ required_rubygems_version: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ requirements: []
226
+ rubyforge_project:
227
+ rubygems_version: 2.1.11
228
+ signing_key:
229
+ specification_version: 4
230
+ summary: Roman Catholic liturgical calendar computations
231
+ test_files: []