Releases: igneus/calendarium-romanum
Releases · igneus/calendarium-romanum
0.9.0
Fixed
Transfers
+Calendar
: on collision of two solemnities of exactly the same rank (e.g. collision of the solemnities of Sacred Heart of Jesus and Birth of St. John the Baptist in 2022) the sanctorale one was scheduled both on the original date and on the transferred date and the temporale solemnity was not scheduled at all- liturgical colour of All Souls (has incorrectly been white since the beginning of the project, changed to violet)
Added
- data: General Roman Calendar in Portuguese + Portuguese locale (by Tomas Monteiro @tmonteiro2344)
- data: all calendars: new memorial of St. Martha, Mary and Lazarus (replacing memorial of St. Martha alone), new optional memorials of St. Gregory of Narek, St. John De Avila and St. Hildegard of Bingen
SanctoraleWriter.new
: new optional keyword argumentfront_matter
Calendar.new
: new optional keyword argumenttransfers
for supplying custom implementation of the solemnity transfer logicTemporale#provides_celebration?
Sanctorale#provides_celebration?
,#by_symbol
,#merge
- CLI:
calendariumrom id
to list celebration symbols included in specified sanctorale data file - CLI:
calendariumrom merge
to merge two or more sanctorale data files - CLI:
calendariumrom cmp
supports new options--no-rank
,--no-colour
,--no-symbol
for ignoring differences in the specified celebration properties and option--title
to check for differences in title (ignored by default)
Changed
Temporale::Dates
methods are defined as instance methods and made available as module methods throughextend self
(so far they were defined and only available as module methods)Temporale::Dates
: helper methodsweekday_before
,weekday_after
,octave_of
and their derivatives extracted to a new moduleTemporale::DateHelper
(but they are still available onTemporale::Dates
, too)- data: repeated spaces removed from the Latin, Italian and Spanish version of the General Roman Calendar (this does not affect behaviour of calendarium-romanum itself, but may affect some other applications possibly processing the data files directly)
Transfers#call
return value: now it contains not only solemnities transferred (and the destination dates), but also the ones winning the original date, unless they are of the two highest ranksTransfer#call
: in case of collision of two solemnities of exactly the same rank temporale always wins over sanctoraleSanctorale#dup
now properly creates for the clone it's own internal data structures independent of the original's ones- CLI:
calendariumrom cmp
exits with status 1 if any differences are found - CLI:
calendariumrom cmp
prints celebration symbol if available - runtime dependencies loosenned: we support
thor
already from version 0.15 andi18n
from version 0.7
0.8.0
Fixed
- several fixes to the solemnity transfer rules:
- the algorithm was searching for free days only forwards,
but liturgical law assumes closest free day, even earlier - check that two solemnities are not transferred to the same date,
overwriting one another - the special rule on Annunciation from Normae universales 60
implemented
- the algorithm was searching for free days only forwards,
- fixed bug in computation of the date of Baptism of the Lord if Epiphany
is transferred to Sunday - fixed bug in
Sanctorale#update
preventing more than oneCelebration
with nil#symbol
in a singleSanctorale
CelebrationFactory
was settingCelebration#date
(if not specified)
to false instead of expected nil (thus breaking type promises)- data:
czech-cs.txt
: typo fixed in the feast symbol of St. Bartholomew;
spelling of several feast titles corrected - data:
czech-cs.txt
: proof-read against official sources, feasts
of "BVM, Queen of Angels" and St. Teresa of Calcutta deleted
(they are not on the calendar of Czech and Moravian dioceses,
incorrect information was copied from Czech Wikipedia at the time
of the data file's creation) - data: all: Dedication of the Lateran Basilica is feast of the Lord
(had incorrect rank of a normal feast so far) - data:
universal-en.txt
: several inaccuracies concerning liturgical
colour fixed
Added
liturgical_law/
: all documents of liturgical legislation
containing the liturgical calendar rules (original Latin text)
in Markdown format, with Ruby code examples proving that
the rules are implemented correctly;
the code examples are all executed as part of the gem's test suiteSanctoraleWriter
(contributed by Mike Kasberg @mkasberg)PerpetualCalendar.new
accepts keyword argumentvespers
(cf.Calendar.new
argument of the same name)Rank#optional_memorial?
,#obligatory_memorial?
AbstractDate#in_year
- more readable alias of#concretize
Rank#succ
- (among other things) allows constructingRange
ofRank
sCalendar#transferred
Temporale::Extensions::DedicationBeforeAllSaints
defining the solemnity
of Aniversary of Dedication for churches celebrating it on the movable
date on the last October SundayTemporale::Extensions.all
- method listing all Temporale extensions
defined by the gemTemporale#each_day
Temporale::EasterTable
- class handling a simple plaintext format
for tables of Easter datesCelebration.new
: new argumentsunday
SanctoraleLoader
: proper solemnities/feasts/memorials
can be specified also by adding suffixp
to the rank code
(instead of rank priority number used so far),
similarly suffixl
can be used to specify proper rank for
feasts of the Lord- data:
universal-1969-la.txt
- historical first version
of the General Roman Calendar - module
Constants
containing all the constants fromColours
,
Seasons
andRanks
Changed
- the gemspec now declares requirement of Ruby >= 2.0
Calendar.new
can be called also without theyear
argument ifTemporale
is provided (thus callingCalendar.new(temporale, sanctorale)
instead ofCalendar.new(year, sanctorale, temporale)
)- Easter Triduum is now dealt with as a separate
Season
,
because Normae universales 18-21 clearly set the Triduum apart from
both Lent and Eastertide Temporale::Extensions::ChristEternalPriest
specifies celebration
symbol (so far it was nil)Celebration.new
supports keyword arguments (as an alternative to
or even in combination with the positional ones)Temporale
: business logic guaranteeing thatCelebration#sunday?
is true also for privileged Sundays (Advent, Lent)calendariumrom
executable: all subcommands dealing with sanctorale
data files accept special file name-
and load sanctorale data
from stdin in that caseEnum
,Colours
,Seasons
,Ranks
andData
changed from classes
to modules
Acknowledgements
Improvements not affecting the gem's public interface (and thus not listed
in the changelog) contributed by
0.7.1
Fixed
SanctoraleFactory.load_with_parents
crashing on files without metadataSanctorale#update
prohibiting application of a particular calendar which moves s celebration contained in the calendar being updated to an earlier date (as exemplified by the bundled calendar of diocese of Litoměřice, Czech Republic: on calendarium-romanum 0.7.0CalendariumRomanum::Data['czech-litomerice-cs'].load_with_parents
raisesArgumentError
complaining about non-unique celebration symbols)- broken links in YARD documentation (due to files missing in the gem archive and basename clashes)
Changed
- if
Sanctorale#update
raisesArgumentError
complaining about non-unique celebration symbols, the updatedSanctorale
instance is left in an inconsistent internal state (more than one occurrence of at least one celebration symbol) - some additional non-code files (mostly for YARD documentation) included in the gem archive
0.7.0
Fixed
- St. Sebastian was missing in the French version of General Roman Calendar
- St. of Pietrelcina had incorrect rank in the Czech calendar
Sanctorale#add
: invalid attempt (i.e. an attempt raising an exception)
to add a second (or n-th) celebration for a given date was causing
inconsistency in the instance's internal state- CLI:
calendariumrom query
wasn't printing celebrations of the highest
ranks (spotted and fixed by Mike Kasberg @mkasberg) - CLI: got rid of a deprecation warning of the
i18n
gem
concerningI18n.enforce_available_locales
(by Mike Kasberg @mkasberg)
Added
- data: General Roman Calendar in Spanish + Spanish locale (by Alejandro Ulate @CodingAleCR)
- data: optional memorials of St. Paul VI, Our Lady of Loreto, St. Faustina Kowalska
- data: diocese of Prague: optional memorial of Bl. Friedrich Bachstein and companions
Day#weekday_name
(by Ronald Walker @RonWalker22)Day#to_s
,Celebration#to_s
(by PJ Pollina @pjpollina)- all sanctorale data files are provided with celebration symbols (available as
Celebration#symbol
when loaded) SanctoraleLoader
loads the YAML front matter (if provided),
toSanctorale#metadata
(new property added for this purpose)SanctoraleFactory
methods merge not only sanctorale contents,
but also metadataSanctoraleFactory.load_with_parents
,Data#load_with_parents
to conveniently load sanctorale file hierarchies based on their
metadata (using key"extends"
)calendarium-romanum/cr
defining::CR
shortcut constant- huge improvement of the API documentation
Changed
- data files format: celebration symbols never more start with a colon
Sanctorale#add
throwsArgumentError
on attempt to add aCelebration
with#symbol
which is already present in the given sanctorale- all
#each
and#each_*
methods defined in the gem returnEnumerator
if called without a block
0.6.0
Fixed
Feature release - bugs were only introduced, not fixed :)
Added
- now handled: Saturday Memorial of the Blessed Virgin Mary
- new memorial of Mary, Mother of the Church
(both handled byTemporale
) Temporale#==
,Sanctorale#==
Calendar#populates_vespers?
(access value of an option)Temporale#[]
,Sanctorale#[]
,PerpetualCalendar#[]
Celebration#date
- only set for fixed-date celebrations,
contains the celebration's usual date (asAbstractDate
instance),
thus making it possible
to check if a solemnity was transferred and what would be
it's normal date if the transfer didn't occurCelebration#cycle
- returns either:temporale
or:sanctorale
- cycle predicates:
Celebration#temporale?
and#sanctorale?
Calendar#each
- yields each day of the liturgical year- missing rank predicates:
Rank#ferial?
,Rank#sunday?
,
Celebration#ferial?
,Celebration#sunday?
Celebration#symbol
can be specified also in sanctorale data files
(but data files with symbols are not yet available)- CLI:
calendariumrom version
prints gem version
Changed
Calendar#==
used to compare only class and year, now it compares
complete internal dataColour#to_s
andSeason#to_s
now return meaningful values
like"#<CalendariumRomanum::Colour red>"
and"#<CalendariumRomanum::Season lent>"
;
return value ofRank#to_s
changed to match the common format- English temporale feast names edited to match the standard US
liturgical books (by Mike Kasberg @mkasberg) examples/
directory removed (README is now the main source
of copy-pastable examples)- file naming unified:
calendarium-romanum/sanctoraleloader.rb
renamed to.../sanctorale_loader.rb
0.5.0
Fixed
- transfer of Epiphany to a Sunday was breaking numbering of weeks
of the Ordinary Time Day.new()
(call without any arguments) was crashing- shebang of
calendariumrom
- CLI:
calendariumrom query
was printing internal representation
of aSeason
object instead of human-readable season name
(spotted and fixed by Simon Szutkowski @simonszu) - MRI 2.x interpreter warnings
Added
- first Vespers of Sundays and solemnities: optional feature
of theCalendar
(constructor has new keyword argument
vespers: true
to activate it), populatesDay#vespers
with aCelebration
if Vespers should be taken from the following
day - proper handling of collision between Immaculate heart of Mary
and another obligatory memorial (CDW Prot. n. 2671/98/L) Calendar#[]
- alias ofCalendar#day
, but with additional
support for aRange
ofDate
s (returns anArray
ofDates
when called this way;
by Brian Gates @bgates)Celebration#change(title: nil, rank: nil, colour: nil, color: nil, symbol: nil)
-
returns a copy of the celebration with values of selected
properties replaced by those passed as argumentsCelebration#symbol
- machine-readable unique identifier
of a celebration, for now only for solemnities of the temporale- CLI:
calendariumrom query
supports printing a day, month or year
(by Simon Szutkowski @simonszu) - CLI:
calendariumrom query
supports apart of bundled calendars
also custom ones, specified on the command line
(by Simon Szutkowski @simonszu) - CLI:
calendariumrom cmp
correctly handles celebrations
present in only one of the compared sources - data: memorials of saint popes John XXIII and John Paul II added
to Universal Roman calendar in Latin and to the calendar
of Czech and Moravian dioceses where they were missing
Changed
- ferials of the final week of Advent have proper titles
- ordinals in French names of Sundays and ferials have proper
suffixes Day.new
signature changed from argument Hash
to Ruby 2 keyword arguments (no change in argument names
or count, but previously it wouldn't even notice unexpected
arguments, now it will crash when encountering them)SanctoraleLoader
raises alwaysInvalidDataError
(it used to raiseRangeError
on invalid date and
RuntimeError
on other kinds of invalid data)CelebrationFactory
creates also temporale solemnities
(useful mostly in specs)- CLI:
calendariumrom errors
fails gracefully, without backtrace
0.4.0
Fixed
Sanctorale#replace
saving the supplied array as part of
the internal data structures (and thus allowing their -
usually unintentional - modification by external code)Calendar
unintentionally modifyingSanctorale
internal data
when handling optional memorials- errors in English ordinals greater than 10 ("21th" -> "21st" etc.)
Ranks::FERIAL.memorial?
wrongly returningtrue
- rank of All Souls fixed in all data files
Added
- support for transfer of Epiphany, Ascension and Corpus Christi
to a Sunday (GNLYC 7) - General Roman Calendar in French and French localization
(by Azarias Boutin @AzariasB) PerpetualCalendar
Season#name
,Colour#name
- localized human-readable names
Changed
- interface for
Temporale
extensions changed completely:
extensions are self-contained, isolated; their sole responsibility
is to yield data Calendar
stripped of the ability to create new instances
with the same settings:Calendar#pred
and#succ
removedCalendar.new
receivesTemporale
instance
(instead of a temporale factory)
Calendar#day
raisesRangeError
if the day is earlier than
1st January 1970 (day of introduction of the implemented calendar
system)Temporale::Dates.easter_sunday
doesn't return Julian calendar
Easter date for years <= 1752 (this library isn't intended to be used
for years earlier than 1970)Day#==
andCalendar#==
test object contents, not identityTemporale::Dates.body_blood
renamed to.corpus_christi
Sanctorale#freeze
freezes also the internal data structuresCalendar#freeze
freezes containedTemporale
andSanctorale
- seasons and colours indexed by their symbols, not by index number -
e.g.Seasons[:lent]
,Colours[:violet]
Calendar#celebrations_for
made private
0.3.0
Fixed
This is a feature release - bugs were only introduced, not fixed :)
Added
Celebration#title
is now being generated for all Sundays and
ferials (was empty)- ferials of the Holy Week and of the last week of Advent
have proper ranks - new rank
Ranks::COMMEMORATION
introduced;
during privileged seasons, suppressed memorials, which
can be commemorated in the Divine Office (see GILH 239),
appear inDay#celebrations
with this rank - memorial of the Immaculate Heart of Mary
(although it really belongs to the sanctorale, as a movable feast
it is implemented inTemporale
) - support for extending
Temporale
with additional feasts
(Temporale.with_extensions
,Temporale.add_celebration
,
additional optional argument accepted byCalendar.new
and
Calendar.for_date
) Temporale::Extensions::ChristEternalPriest
-Temporale
extension
implementing the feast of Christ the Eternal Priest,
celebrated in some dioceses and religious institutes
on Thursday after PentecostTemporale::Dates
- module containing all the
temporale-solemnity-date-computing algorithms used inTemporale
Temporale#year
- sanctorale data files may have YAML front matter
(a YAML document with metadata placed before the main content)
Changed
- seasons and colours are represented by
Season
andColour
instances, not bySymbol
s Temporale#advent_sunday
and most#*_advent_sunday
removed, onlyTemporale#first_advent_sunday
remainsTemporale#weekday_before
,#weekday_after
,#octave_of
,
#monday_before
etc.,#monday_after
etc. removed
(all these general date helpers now reside inTemporale::Dates
)- unused attribute
Day#vespers
removed Temporale#concretize_abstract_date
removed
0.2.1
0.2.0
Fixed
- numbering of Ordinary Time Sundays after Pentecost
Calendar#day
when an instance ofDateTime
is supplied as argument- minor fixes in data files
calendariumrom
executable (broken in recent releases)
Added
- missing temporale feast days: Ash Wednesday, Palm Sunday, Ascension,
- new bundled locales: Latin, Italian, Czech
- contents of
Seasons
,Ranks
andColours
can be explored viaeach
andall
- bundled data files easily accessible through
CalendariumRomanum::Data
Changed
Rank
never more inherits fromStruct
Seasons
,Ranks
andColours
changed from modules to classesSanctorale
raisesArgumentError
on attempt to load two celebrations of rank other than optional memorial on a single day- data file format: rank letter is optional when the rank is specified by number
- data file format: rank and colour letters are treated case-insensitively