Skip to content

Releases: igneus/calendarium-romanum

0.9.0

11 Apr 13:26
Compare
Choose a tag to compare

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 argument front_matter
  • Calendar.new: new optional keyword argument transfers for supplying custom implementation of the solemnity transfer logic
  • Temporale#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 through extend self (so far they were defined and only available as module methods)
  • Temporale::Dates: helper methods weekday_before, weekday_after, octave_of and their derivatives extracted to a new module Temporale::DateHelper (but they are still available on Temporale::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 ranks
  • Transfer#call: in case of collision of two solemnities of exactly the same rank temporale always wins over sanctorale
  • Sanctorale#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 and i18n from version 0.7

0.8.0

25 Nov 22:37
Compare
Choose a tag to compare

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
  • 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 one Celebration
    with nil #symbol in a single Sanctorale
  • CelebrationFactory was setting Celebration#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 suite
  • SanctoraleWriter (contributed by Mike Kasberg @mkasberg)
  • PerpetualCalendar.new accepts keyword argument vespers
    (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 constructing Range of Ranks
  • Calendar#transferred
  • Temporale::Extensions::DedicationBeforeAllSaints defining the solemnity
    of Aniversary of Dedication for churches celebrating it on the movable
    date on the last October Sunday
  • Temporale::Extensions.all - method listing all Temporale extensions
    defined by the gem
  • Temporale#each_day
  • Temporale::EasterTable - class handling a simple plaintext format
    for tables of Easter dates
  • Celebration.new: new argument sunday
  • SanctoraleLoader: proper solemnities/feasts/memorials
    can be specified also by adding suffix p to the rank code
    (instead of rank priority number used so far),
    similarly suffix l 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 from Colours,
    Seasons and Ranks

Changed

  • the gemspec now declares requirement of Ruby >= 2.0
  • Calendar.new can be called also without the year argument if Temporale
    is provided (thus calling Calendar.new(temporale, sanctorale)
    instead of Calendar.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 that Celebration#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 case
  • Enum, Colours, Seasons, Ranks and Data 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

28 Jun 14:36
Compare
Choose a tag to compare

Fixed

  • SanctoraleFactory.load_with_parents crashing on files without metadata
  • Sanctorale#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.0 CalendariumRomanum::Data['czech-litomerice-cs'].load_with_parents raises ArgumentError 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 raises ArgumentError complaining about non-unique celebration symbols, the updated Sanctorale 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

21 Jun 21:18
Compare
Choose a tag to compare

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
    concerning I18n.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),
    to Sanctorale#metadata (new property added for this purpose)
  • SanctoraleFactory methods merge not only sanctorale contents,
    but also metadata
  • SanctoraleFactory.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 throws ArgumentError on attempt to add a Celebration
    with #symbol which is already present in the given sanctorale
  • all #each and #each_* methods defined in the gem return Enumerator
    if called without a block

0.6.0

27 Mar 19:05
Compare
Choose a tag to compare

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 by Temporale)
  • 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 (as AbstractDate 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 occur
  • Celebration#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 data
  • Colour#to_s and Season#to_s now return meaningful values
    like "#<CalendariumRomanum::Colour red>"
    and "#<CalendariumRomanum::Season lent>";
    return value of Rank#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

01 Nov 18:42
Compare
Choose a tag to compare

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 a Season 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 the Calendar (constructor has new keyword argument
    vespers: true to activate it), populates Day#vespers
    with a Celebration 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 of Calendar#day, but with additional
    support for a Range of Dates (returns an Array of Dates
    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 arguments
  • Celebration#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 always InvalidDataError
    (it used to raise RangeError 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

01 Sep 22:37
Compare
Choose a tag to compare

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 modifying Sanctorale internal data
    when handling optional memorials
  • errors in English ordinals greater than 10 ("21th" -> "21st" etc.)
  • Ranks::FERIAL.memorial? wrongly returning true
  • 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 removed
    • Calendar.new receives Temporale instance
      (instead of a temporale factory)
  • Calendar#day raises RangeError 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#== and Calendar#== test object contents, not identity
  • Temporale::Dates.body_blood renamed to .corpus_christi
  • Sanctorale#freeze freezes also the internal data structures
  • Calendar#freeze freezes contained Temporale and Sanctorale
  • 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

07 Aug 17:25
Compare
Choose a tag to compare

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 in Day#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 in Temporale)
  • support for extending Temporale with additional feasts
    (Temporale.with_extensions, Temporale.add_celebration,
    additional optional argument accepted by Calendar.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 Pentecost
  • Temporale::Dates - module containing all the
    temporale-solemnity-date-computing algorithms used in Temporale
  • 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 and Colour
    instances, not by Symbols
  • Temporale#advent_sunday and most #*_advent_sunday
    removed, only Temporale#first_advent_sunday remains
  • Temporale#weekday_before, #weekday_after, #octave_of,
    #monday_before etc., #monday_after etc. removed
    (all these general date helpers now reside in Temporale::Dates)
  • unused attribute Day#vespers removed
  • Temporale#concretize_abstract_date removed

0.2.1

21 Jul 20:05
Compare
Choose a tag to compare

Fixed

  • AbstractDate validity checks refusing 29th February

0.2.0

20 Jul 18:03
Compare
Choose a tag to compare

Fixed

  • numbering of Ordinary Time Sundays after Pentecost
  • Calendar#day when an instance of DateTime 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 and Colours can be explored via each and all
  • bundled data files easily accessible through CalendariumRomanum::Data

Changed

  • Rank never more inherits from Struct
  • Seasons, Ranks and Colours changed from modules to classes
  • Sanctorale raises ArgumentError 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