Compare commits
2 Commits
188f36397b
...
37ac31c3f2
| Author | SHA1 | Date | |
|---|---|---|---|
| 37ac31c3f2 | |||
| 8bb5d0167d |
@@ -0,0 +1,40 @@
|
|||||||
|
// Resolves two sanctoral candidates wanting the same day — the case
|
||||||
|
// calendar/feasts.ts explicitly doesn't cover (it just picks the
|
||||||
|
// higher-ranked of several native candidates and drops the rest) and that
|
||||||
|
// calendar/commemorations.ts doesn't cover either (that's temporal-vs-
|
||||||
|
// sanctoral, this is sanctoral-vs-sanctoral). This is specifically what a
|
||||||
|
// transferred feast (calendar/transfer.ts) runs into when its landing day
|
||||||
|
// already has a native saint — never triggered by a plain ferial landing,
|
||||||
|
// since a genuinely empty day isn't a collision at all.
|
||||||
|
//
|
||||||
|
// Same ordering as commemorations.ts's FeastClass scale, which is exactly
|
||||||
|
// the point: `duplex > semiduplex > vigil > simplex` is that scale, not a
|
||||||
|
// separate one — see calendar/types.ts's FeastClass doc comment.
|
||||||
|
import type { Commemoration, DayWinner, SanctoralIdentity } from './types';
|
||||||
|
import { compareFeastClass } from './commemorations';
|
||||||
|
|
||||||
|
export interface CollisionResult {
|
||||||
|
winner: DayWinner;
|
||||||
|
commemorations: Commemoration[];
|
||||||
|
}
|
||||||
|
|
||||||
|
function asWinner(candidate: SanctoralIdentity): DayWinner {
|
||||||
|
return { kind: 'sanctoral', id: candidate.id, name: candidate.name, rank: candidate.rank };
|
||||||
|
}
|
||||||
|
|
||||||
|
function asCommemoration(candidate: SanctoralIdentity): Commemoration {
|
||||||
|
return { kind: 'sanctoral', id: candidate.id, name: candidate.name, rank: candidate.rank };
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* `incoming` is the transferred candidate; `native` is whoever already
|
||||||
|
* occupies the landing day. The loser is always commemorated — unlike
|
||||||
|
* commemorations.ts's Sunday rules, there's no rank threshold below which
|
||||||
|
* it gets nothing; a real named feast landing anywhere always leaves a
|
||||||
|
* trace. Ties favor `native` — the incoming feast is the guest here.
|
||||||
|
*/
|
||||||
|
export function resolveCollision(incoming: SanctoralIdentity, native: SanctoralIdentity): CollisionResult {
|
||||||
|
const winner = compareFeastClass(incoming.rank, native.rank) > 0 ? incoming : native;
|
||||||
|
const loser = winner === incoming ? native : incoming;
|
||||||
|
return { winner: asWinner(winner), commemorations: [asCommemoration(loser)] };
|
||||||
|
}
|
||||||
@@ -1,19 +1,24 @@
|
|||||||
// Precedence/occurrence resolution: given a day's temporal-cycle standing
|
// Precedence/occurrence resolution: given a day's temporal-cycle standing
|
||||||
// (calendar/types.ts's TemporalCategory) and a candidate sanctoral feast (if
|
// (calendar/types.ts's TemporalCategory) and a candidate sanctoral feast (if
|
||||||
// any), which one is actually kept, and whether the loser is commemorated.
|
// any), which one is actually kept, what (if anything) is commemorated
|
||||||
|
// alongside it, and whether the candidate needs to be transferred to an
|
||||||
|
// adjacent day instead (see calendar/transfer.ts for what actually happens
|
||||||
|
// with that signal).
|
||||||
//
|
//
|
||||||
// Modeled as explicit rules per category, not a numeric-weight comparison
|
// Modeled as explicit rules per category, not a numeric-weight comparison
|
||||||
// like the reference engine's occurrence()/concurrence() — see
|
// like the reference engine's occurrence()/concurrence() — see
|
||||||
// data/calendar/temporal-categories.yml's header for why. The thresholds
|
// data/calendar/temporal-categories.yml's header for why. Verified in part
|
||||||
// below are a best-effort reconstruction of the pre-1955 tradition (partly
|
// against real dates (the Sunday-vs-Duplex threshold below was corrected
|
||||||
// grounded in General Rubrics §15/§16/§23, though that document is itself a
|
// after finding St. Anthony Abbot, plain Duplex, outright winning against
|
||||||
// later, differently-numbered edition — see that file's header), not
|
// an ordinary Sunday in the real Monastic 1617 engine — a genuine
|
||||||
// verified against a primary source for this exact era. Expect corrections.
|
// correction, not a guess); the rest is the result of a design discussion,
|
||||||
|
// not yet independently verified against a primary source.
|
||||||
|
|
||||||
import type { FeastClass, TemporalCategory } from './types';
|
import type { Commemoration, DayWinner, FeastClass, SanctoralIdentity, TemporalCategory } from './types';
|
||||||
|
|
||||||
const FEAST_CLASS_ORDER: FeastClass[] = [
|
const FEAST_CLASS_ORDER: FeastClass[] = [
|
||||||
'simplex',
|
'simplex',
|
||||||
|
'vigil',
|
||||||
'semiduplex',
|
'semiduplex',
|
||||||
'duplex',
|
'duplex',
|
||||||
'duplex-majus',
|
'duplex-majus',
|
||||||
@@ -29,47 +34,91 @@ export function isAtLeast(rank: FeastClass, threshold: FeastClass): boolean {
|
|||||||
return compareFeastClass(rank, threshold) >= 0;
|
return compareFeastClass(rank, threshold) >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Vigils belong to the day *before* their feast, so an impeded vigil is
|
||||||
|
* shifted backward rather than forward like everything else — see
|
||||||
|
* calendar/transfer.ts. */
|
||||||
|
function transferDirectionOf(rank: FeastClass): 'forward' | 'backward' {
|
||||||
|
return rank === 'vigil' ? 'backward' : 'forward';
|
||||||
|
}
|
||||||
|
|
||||||
export interface OccurrenceResult {
|
export interface OccurrenceResult {
|
||||||
winner: 'temporal' | 'sanctoral';
|
/** This day's own resolution, with the candidate absent if it's being transferred. */
|
||||||
commemorated: boolean;
|
winner: DayWinner;
|
||||||
|
commemorations: Commemoration[];
|
||||||
|
/** Set when `sanctoral` doesn't win or get commemorated here at all — it
|
||||||
|
* needs to be resolved against an adjacent day instead. */
|
||||||
|
transfer?: { candidate: SanctoralIdentity; direction: 'forward' | 'backward' };
|
||||||
|
}
|
||||||
|
|
||||||
|
function sanctoralCommemoration(candidate: SanctoralIdentity): Commemoration {
|
||||||
|
return { kind: 'sanctoral', id: candidate.id, name: candidate.name, rank: candidate.rank };
|
||||||
|
}
|
||||||
|
|
||||||
|
function sanctoralWinner(candidate: SanctoralIdentity): DayWinner {
|
||||||
|
return { kind: 'sanctoral', id: candidate.id, name: candidate.name, rank: candidate.rank };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* `sanctoral === null` means no feast is assigned to this date at all —
|
* `temporalId` is this day's own temporal-propers id (see
|
||||||
* temporal wins trivially, nothing to decide.
|
* calendar/temporal-id.ts) — needed so a temporal winner or commemoration
|
||||||
|
* can actually be looked up later (`propers.getTemporalProper`), not just
|
||||||
|
* named "temporal" in the abstract.
|
||||||
*/
|
*/
|
||||||
export function decideOccurrence(temporal: TemporalCategory, sanctoral: FeastClass | null): OccurrenceResult {
|
export function decideOccurrence(
|
||||||
|
temporal: TemporalCategory,
|
||||||
|
temporalId: string,
|
||||||
|
sanctoral: SanctoralIdentity | null,
|
||||||
|
): OccurrenceResult {
|
||||||
|
const temporalWinner: DayWinner = { kind: 'temporal', id: temporalId };
|
||||||
if (!sanctoral) {
|
if (!sanctoral) {
|
||||||
return { winner: 'temporal', commemorated: false };
|
return { winner: temporalWinner, commemorations: [] };
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (temporal) {
|
switch (temporal) {
|
||||||
case 'ordinary-feria':
|
case 'ordinary-feria':
|
||||||
// An ordinary feria has no standing of its own to defend — any real
|
// An ordinary feria has no standing of its own to defend — any real
|
||||||
// feast, however low-ranked, is kept in its place.
|
// feast, however low-ranked, is kept in its place.
|
||||||
return { winner: 'sanctoral', commemorated: false };
|
return { winner: sanctoralWinner(sanctoral), commemorations: [] };
|
||||||
|
|
||||||
case 'privileged-feria':
|
case 'privileged-feria':
|
||||||
// "These ferias are preferred to any feasts whatsoever, and they
|
// Preferred to any feast whatsoever; admits no commemoration except
|
||||||
// admit of no commemoration, except one of the privileged class"
|
// one of the very highest class.
|
||||||
// (General Rubrics §23) — read here as: only the very highest class
|
return {
|
||||||
// even gets a mention.
|
winner: temporalWinner,
|
||||||
return { winner: 'temporal', commemorated: isAtLeast(sanctoral, 'duplex-1-classis') };
|
commemorations: isAtLeast(sanctoral.rank, 'duplex-1-classis') ? [sanctoralCommemoration(sanctoral)] : [],
|
||||||
|
};
|
||||||
|
|
||||||
case 'ordinary-sunday':
|
case 'ordinary-sunday':
|
||||||
// An ordinary Sunday yields outright only to the highest class; a
|
if (isAtLeast(sanctoral.rank, 'duplex')) {
|
||||||
// Double of the 2nd Class or a Greater Double is kept as a
|
// Duplex+ wins outright; the Sunday itself is commemorated in return.
|
||||||
// commemoration instead of displacing the Sunday; anything lower
|
return { winner: sanctoralWinner(sanctoral), commemorations: [{ kind: 'temporal', id: temporalId }] };
|
||||||
// isn't even mentioned.
|
|
||||||
if (isAtLeast(sanctoral, 'duplex-1-classis')) {
|
|
||||||
return { winner: 'sanctoral', commemorated: false };
|
|
||||||
}
|
}
|
||||||
return { winner: 'temporal', commemorated: isAtLeast(sanctoral, 'duplex-majus') };
|
if (sanctoral.rank === 'simplex') {
|
||||||
|
// Too minor to warrant its own day, but a plain commemoration
|
||||||
|
// doesn't cheapen it the way it would a Semiduplex.
|
||||||
|
return { winner: temporalWinner, commemorations: [sanctoralCommemoration(sanctoral)] };
|
||||||
|
}
|
||||||
|
// Semiduplex or Vigil: no room here at all, in either direction —
|
||||||
|
// better to preserve the feast whole on another day than downgrade
|
||||||
|
// it to a bare commemoration.
|
||||||
|
return {
|
||||||
|
winner: temporalWinner,
|
||||||
|
commemorations: [],
|
||||||
|
transfer: { candidate: sanctoral, direction: transferDirectionOf(sanctoral.rank) },
|
||||||
|
};
|
||||||
|
|
||||||
case 'privileged-sunday':
|
case 'privileged-sunday':
|
||||||
// "A Sunday of the 1st class is preferred to any feast whatsoever"
|
if (isAtLeast(sanctoral.rank, 'duplex-majus')) {
|
||||||
// (General Rubrics §15) — never displaced; commemorated only if the
|
// Never displaced, but a sufficiently high feast still gets a nod.
|
||||||
// feast is otherwise of the very top ranks.
|
return { winner: temporalWinner, commemorations: [sanctoralCommemoration(sanctoral)] };
|
||||||
return { winner: 'temporal', commemorated: isAtLeast(sanctoral, 'duplex-2-classis') };
|
}
|
||||||
|
// Below duplex-majus, a privileged Sunday wants nothing at all —
|
||||||
|
// not even the bare commemoration an ordinary Sunday would allow a
|
||||||
|
// Simplex — so everything here transfers.
|
||||||
|
return {
|
||||||
|
winner: temporalWinner,
|
||||||
|
commemorations: [],
|
||||||
|
transfer: { candidate: sanctoral, direction: transferDirectionOf(sanctoral.rank) },
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -132,12 +132,11 @@ function temporalLabel(day: LiturgicalDay): string {
|
|||||||
* came from for the three cases.
|
* came from for the three cases.
|
||||||
*/
|
*/
|
||||||
export function getDayLabel(day: LiturgicalDay): string {
|
export function getDayLabel(day: LiturgicalDay): string {
|
||||||
const winner = day.occurring.find((feast) => !feast.commemorated);
|
if (day.winner.kind === 'sanctoral') {
|
||||||
if (winner) {
|
return day.winner.name;
|
||||||
return winner.name;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const temporal = temporalLabel(day);
|
const temporal = temporalLabel(day);
|
||||||
const commemorated = day.occurring.find((feast) => feast.commemorated);
|
const commemorated = day.commemorations.find((c) => c.kind === 'sanctoral');
|
||||||
return commemorated ? `${commemorated.name} — ${temporal}` : temporal;
|
return commemorated ? `${commemorated.name} — ${temporal}` : temporal;
|
||||||
}
|
}
|
||||||
|
|||||||
+92
-34
@@ -1,57 +1,115 @@
|
|||||||
import type { LiturgicalDay, OccurringFeast } from './types';
|
import type { Commemoration, DayWinner, LiturgicalDay, SanctoralIdentity, TemporalCategory } from './types';
|
||||||
import { weekdayOf } from './weekday';
|
import { weekdayOf } from './weekday';
|
||||||
import { resolveSeason, resolveTemporalCategory } from './temporal';
|
import { resolveSeason, resolveTemporalCategory } from './temporal';
|
||||||
|
import { resolveTemporalId } from './temporal-id';
|
||||||
import { getSanctoralCandidatesFor } from './feasts';
|
import { getSanctoralCandidatesFor } from './feasts';
|
||||||
import { decideOccurrence, compareFeastClass } from './commemorations';
|
import { decideOccurrence, type OccurrenceResult } from './commemorations';
|
||||||
|
import { resolveCollision } from './collision';
|
||||||
|
import { addDays } from './date-math';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A day's occurrence considered on its own — no awareness of what an
|
||||||
|
* adjacent day might be trying to transfer in. `resolveDay` calls this for
|
||||||
|
* the date itself *and* for yesterday/tomorrow (to check for an inbound
|
||||||
|
* transfer) without ever recursing into their own adjacent-day checks —
|
||||||
|
* that's what keeps this from being mutually recursive.
|
||||||
|
*/
|
||||||
|
function resolveNativeOccurrence(isoDate: string): { temporalCategory: TemporalCategory; result: OccurrenceResult } {
|
||||||
|
const weekday = weekdayOf(isoDate);
|
||||||
|
const season = resolveSeason(isoDate);
|
||||||
|
const temporalCategory = resolveTemporalCategory(isoDate, season, weekday);
|
||||||
|
const temporalId = resolveTemporalId(isoDate);
|
||||||
|
|
||||||
|
// Multiple saints sharing a date is its own small occurrence contest,
|
||||||
|
// resolved the same way a transfer landing is — see calendar/collision.ts.
|
||||||
|
const candidates = getSanctoralCandidatesFor(isoDate);
|
||||||
|
let topCandidate: SanctoralIdentity | null = null;
|
||||||
|
const clashCommemorations: Commemoration[] = [];
|
||||||
|
for (const candidate of candidates) {
|
||||||
|
if (!topCandidate) {
|
||||||
|
topCandidate = candidate;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const collision = resolveCollision(candidate, topCandidate);
|
||||||
|
clashCommemorations.push(...collision.commemorations);
|
||||||
|
if (collision.winner.kind === 'sanctoral') {
|
||||||
|
topCandidate = { id: collision.winner.id, name: collision.winner.name, rank: collision.winner.rank };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = decideOccurrence(temporalCategory, temporalId, topCandidate);
|
||||||
|
result.commemorations.push(...clashCommemorations);
|
||||||
|
return { temporalCategory, result };
|
||||||
|
}
|
||||||
|
|
||||||
|
function applyIncomingTransfer(
|
||||||
|
candidate: SanctoralIdentity,
|
||||||
|
temporalCategory: TemporalCategory,
|
||||||
|
winner: DayWinner,
|
||||||
|
commemorations: Commemoration[],
|
||||||
|
): DayWinner {
|
||||||
|
if (temporalCategory === 'privileged-feria') {
|
||||||
|
// Deferred: a transfer landing on a privileged feria (the concrete
|
||||||
|
// case is Holy Week, right after Palm Sunday) needs its own
|
||||||
|
// Easter-date-keyed lookup table, the same way the reference engine
|
||||||
|
// handles it — not modeled yet. The transfer is simply not delivered
|
||||||
|
// here rather than guessed at.
|
||||||
|
return winner;
|
||||||
|
}
|
||||||
|
if (winner.kind === 'temporal') {
|
||||||
|
return { kind: 'sanctoral', id: candidate.id, name: candidate.name, rank: candidate.rank };
|
||||||
|
}
|
||||||
|
const collision = resolveCollision(candidate, winner);
|
||||||
|
commemorations.push(...collision.commemorations);
|
||||||
|
return collision.winner;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resolves everything about a given day *except* hour content — weekday,
|
* Resolves everything about a given day *except* hour content — weekday,
|
||||||
* season, temporal precedence category, and any occurring feast. All real
|
* season, temporal precedence category, and the day's real winner plus
|
||||||
* now: `occurring` combines calendar/feasts.ts's sanctoral candidates (if
|
* whatever's commemorated alongside it (calendar/commemorations.ts,
|
||||||
* more than one shares a date, the highest-ranked wins that contest too —
|
* calendar/collision.ts, calendar/transfer signaling all feed into this).
|
||||||
* clashes *among* saints aren't otherwise modeled) with
|
|
||||||
* calendar/commemorations.ts's occurrence decision. A feast that's fully
|
|
||||||
* superseded (not even commemorated) doesn't appear in `occurring` at all.
|
|
||||||
*/
|
*/
|
||||||
export function resolveDay(isoDate: string): LiturgicalDay {
|
export function resolveDay(isoDate: string): LiturgicalDay {
|
||||||
const weekday = weekdayOf(isoDate);
|
const weekday = weekdayOf(isoDate);
|
||||||
const season = resolveSeason(isoDate);
|
const season = resolveSeason(isoDate);
|
||||||
const temporalCategory = resolveTemporalCategory(isoDate, season, weekday);
|
const { temporalCategory, result } = resolveNativeOccurrence(isoDate);
|
||||||
|
|
||||||
const candidates = getSanctoralCandidatesFor(isoDate);
|
let winner = result.winner;
|
||||||
let topCandidate = candidates[0] ?? null;
|
const commemorations = [...result.commemorations];
|
||||||
for (const candidate of candidates) {
|
|
||||||
if (compareFeastClass(candidate.rank, topCandidate!.rank) > 0) {
|
const yesterday = resolveNativeOccurrence(addDays(isoDate, -1));
|
||||||
topCandidate = candidate;
|
if (yesterday.result.transfer?.direction === 'forward') {
|
||||||
|
winner = applyIncomingTransfer(yesterday.result.transfer.candidate, temporalCategory, winner, commemorations);
|
||||||
}
|
}
|
||||||
|
const tomorrow = resolveNativeOccurrence(addDays(isoDate, 1));
|
||||||
|
if (tomorrow.result.transfer?.direction === 'backward') {
|
||||||
|
winner = applyIncomingTransfer(tomorrow.result.transfer.candidate, temporalCategory, winner, commemorations);
|
||||||
}
|
}
|
||||||
|
|
||||||
const occurring: OccurringFeast[] = [];
|
return { date: isoDate, weekday, season, temporalCategory, winner, commemorations };
|
||||||
if (topCandidate) {
|
|
||||||
const { winner, commemorated } = decideOccurrence(temporalCategory, topCandidate.rank);
|
|
||||||
if (winner === 'sanctoral' || commemorated) {
|
|
||||||
occurring.push({
|
|
||||||
id: topCandidate.id,
|
|
||||||
name: topCandidate.name,
|
|
||||||
rank: topCandidate.rank,
|
|
||||||
commemorated: winner === 'temporal',
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return { date: isoDate, weekday, season, temporalCategory, occurring };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Sunday/feast-vs-ferial split that several hours' propers key off of
|
* The Sunday/feast-vs-ferial split that several hours' propers key off of
|
||||||
* (Prime's capitulum and Preces, so far): a plain weekday with nothing else
|
* (Prime's capitulum and Preces, so far): a plain weekday with nothing else
|
||||||
* going on gets the "ferial" form, Sunday or an occurring feast gets the
|
* going on gets the "ferial" form, Sunday or a winning feast gets the
|
||||||
* fuller "Sunday/feast" form. `occurring` is always [] until milestone 4, so
|
* fuller "Sunday/feast" form.
|
||||||
* today this reduces to "is it Sunday" — but the feast-override branch is
|
|
||||||
* real, not a stub, and will start firing the moment feasts do.
|
|
||||||
*/
|
*/
|
||||||
export function isSundayOrFeast(day: LiturgicalDay): boolean {
|
export function isSundayOrFeast(day: LiturgicalDay): boolean {
|
||||||
return day.weekday === 'sunday' || day.occurring.length > 0;
|
return day.weekday === 'sunday' || day.winner.kind === 'sanctoral';
|
||||||
}
|
}
|
||||||
|
|
||||||
export type { LiturgicalDay, OccurringFeast, Season, Weekday, FeastClass, TemporalCategory } from './types';
|
export { compareFeastClass, isAtLeast, decideOccurrence } from './commemorations';
|
||||||
|
export { resolveCollision } from './collision';
|
||||||
|
export { resolveTemporalId } from './temporal-id';
|
||||||
|
export type {
|
||||||
|
LiturgicalDay,
|
||||||
|
DayWinner,
|
||||||
|
Commemoration,
|
||||||
|
SanctoralIdentity,
|
||||||
|
Season,
|
||||||
|
Weekday,
|
||||||
|
FeastClass,
|
||||||
|
TemporalCategory,
|
||||||
|
} from './types';
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
// Maps any date to one of the 52 canonical temporal-propers ids already
|
||||||
|
// authored in data/propers/temporal/*.yml — the "which Sunday's collect
|
||||||
|
// governs this date" question. A feria always inherits the collect of the
|
||||||
|
// Sunday on or before it (real rubric: the ferias of a week use that
|
||||||
|
// week's own Sunday collect), so this is really "find the governing
|
||||||
|
// Sunday, then name it."
|
||||||
|
//
|
||||||
|
// Deliberately Pentecost/offset-based, not Trinity-counted — this is
|
||||||
|
// content-storage identity, kept independent of whatever counting
|
||||||
|
// convention calendar/day-label.ts displays on screen. See that file's
|
||||||
|
// header and propers/index.ts's getTemporalProper for the fuller version
|
||||||
|
// of this reasoning.
|
||||||
|
//
|
||||||
|
// Two known, deliberately unfixed gaps: the ferias between Christmas Day
|
||||||
|
// and the Sunday within its octave, and between Epiphany and its own
|
||||||
|
// first Sunday, fall back to that season's first named Sunday a few days
|
||||||
|
// early — Christmas Day's and Epiphany's own collects aren't authored as
|
||||||
|
// separate temporal-propers entries (only Sunday collects were pulled), so
|
||||||
|
// this is a deliberate approximation, not an oversight. Likewise, a real
|
||||||
|
// overflow year (early Easter, more than 24 weeks between Trinity and
|
||||||
|
// Advent) would traditionally reuse the unused post-Epiphany Sundays'
|
||||||
|
// collects for the excess weeks — not modeled; this just clamps at
|
||||||
|
// post-pentecost-24.
|
||||||
|
import { resolveSeason, sundayOnOrBefore, firstSundayStrictlyAfter, adventStart, easterOffsetOf } from './temporal';
|
||||||
|
import { daysBetween } from './date-math';
|
||||||
|
|
||||||
|
const EASTER_OFFSET_IDS: [number, string][] = [
|
||||||
|
[-63, 'septuagesima'],
|
||||||
|
[-56, 'sexagesima'],
|
||||||
|
[-49, 'quinquagesima'],
|
||||||
|
[-42, 'lent-1'],
|
||||||
|
[-35, 'lent-2'],
|
||||||
|
[-28, 'lent-3'],
|
||||||
|
[-21, 'lent-4'],
|
||||||
|
[-14, 'passion-sunday'],
|
||||||
|
[-7, 'palm-sunday'],
|
||||||
|
[0, 'easter-sunday'],
|
||||||
|
[7, 'easter-octave'],
|
||||||
|
[14, 'easter-3'],
|
||||||
|
[21, 'easter-4'],
|
||||||
|
[28, 'easter-5'],
|
||||||
|
[35, 'easter-6'],
|
||||||
|
[42, 'sunday-after-ascension'],
|
||||||
|
[49, 'pentecost-sunday'],
|
||||||
|
];
|
||||||
|
for (let n = 1; n <= 24; n++) {
|
||||||
|
EASTER_OFFSET_IDS.push([56 + 7 * (n - 1), `post-pentecost-${String(n).padStart(2, '0')}`]);
|
||||||
|
}
|
||||||
|
const EASTER_OFFSET_ID_MAP = new Map(EASTER_OFFSET_IDS);
|
||||||
|
const MAX_EASTER_OFFSET = EASTER_OFFSET_IDS[EASTER_OFFSET_IDS.length - 1]![0];
|
||||||
|
const MAX_EASTER_OFFSET_ID = EASTER_OFFSET_IDS[EASTER_OFFSET_IDS.length - 1]![1];
|
||||||
|
|
||||||
|
export function resolveTemporalId(isoDate: string): string {
|
||||||
|
const season = resolveSeason(isoDate);
|
||||||
|
const year = Number(isoDate.slice(0, 4));
|
||||||
|
|
||||||
|
if (season === 'advent') {
|
||||||
|
const start = adventStart(year);
|
||||||
|
const n = Math.round(daysBetween(start, sundayOnOrBefore(isoDate)) / 7) + 1;
|
||||||
|
return `advent-${Math.min(n, 4)}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (season === 'christmastide') {
|
||||||
|
return 'christmas-octave-sunday';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (season === 'epiphanytide') {
|
||||||
|
const firstSunday = firstSundayStrictlyAfter(`${year}-01-06`);
|
||||||
|
if (isoDate < firstSunday) {
|
||||||
|
return 'post-epiphany-1';
|
||||||
|
}
|
||||||
|
const n = Math.round(daysBetween(firstSunday, sundayOnOrBefore(isoDate)) / 7) + 1;
|
||||||
|
return `post-epiphany-${Math.min(n, 6)}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Everything else (Septuagesima-tide through Trinitytide) is Easter-
|
||||||
|
// anchored — find the governing Sunday and map its own offset directly,
|
||||||
|
// regardless of which `season` bucket the feria itself falls in (the
|
||||||
|
// ferias right after Ash Wednesday genuinely reuse Quinquagesima's
|
||||||
|
// collect, crossing what resolveSeason calls two different seasons).
|
||||||
|
const offset = easterOffsetOf(sundayOnOrBefore(isoDate));
|
||||||
|
if (offset > MAX_EASTER_OFFSET) {
|
||||||
|
return MAX_EASTER_OFFSET_ID;
|
||||||
|
}
|
||||||
|
return EASTER_OFFSET_ID_MAP.get(offset) ?? 'septuagesima';
|
||||||
|
}
|
||||||
+43
-11
@@ -36,13 +36,28 @@ export type Weekday =
|
|||||||
// third case shows up and the duplication starts to hurt.
|
// third case shows up and the duplication starts to hurt.
|
||||||
export type Season = string;
|
export type Season = string;
|
||||||
|
|
||||||
// The old (pre-1955) rank scale, six levels, low to high. Deliberately a
|
// The old (pre-1955) rank scale, low to high. Deliberately a closed union
|
||||||
// closed union rather than an open string like Season — the whole point of
|
// rather than an open string like Season — the whole point of
|
||||||
// calendar/commemorations.ts's decideOccurrence is to compare two of these
|
// calendar/commemorations.ts's decideOccurrence is to compare two of these
|
||||||
// with explicit, readable rules, which only works if the set of values is
|
// with explicit, readable rules, which only works if the set of values is
|
||||||
// fixed and known. See calendar/types.ts's TemporalCategory doc comment for
|
// fixed and known. See calendar/types.ts's TemporalCategory doc comment for
|
||||||
// the other half of that comparison.
|
// the other half of that comparison.
|
||||||
export type FeastClass = 'simplex' | 'semiduplex' | 'duplex' | 'duplex-majus' | 'duplex-2-classis' | 'duplex-1-classis';
|
//
|
||||||
|
// `vigil` sits between `simplex` and `semiduplex` on purpose — it's the
|
||||||
|
// same strength as `simplex` for the "does this win against a Sunday"
|
||||||
|
// question (both lose and get transferred rather than fighting the day
|
||||||
|
// directly), but ranks strictly above `simplex` for the *separate*
|
||||||
|
// "two saints collide on the same landing day" comparison
|
||||||
|
// (calendar/collision.ts). One ordering serves both; see the design
|
||||||
|
// discussion in project history for why that isn't a coincidence.
|
||||||
|
export type FeastClass =
|
||||||
|
| 'simplex'
|
||||||
|
| 'vigil'
|
||||||
|
| 'semiduplex'
|
||||||
|
| 'duplex'
|
||||||
|
| 'duplex-majus'
|
||||||
|
| 'duplex-2-classis'
|
||||||
|
| 'duplex-1-classis';
|
||||||
|
|
||||||
// A day's own precedence class *before* any sanctoral feast is considered —
|
// A day's own precedence class *before* any sanctoral feast is considered —
|
||||||
// i.e. what the temporal cycle alone says this day is entitled to. This is
|
// i.e. what the temporal cycle alone says this day is entitled to. This is
|
||||||
@@ -57,17 +72,32 @@ export type FeastClass = 'simplex' | 'semiduplex' | 'duplex' | 'duplex-majus' |
|
|||||||
// corrections.
|
// corrections.
|
||||||
export type TemporalCategory = 'ordinary-feria' | 'privileged-feria' | 'ordinary-sunday' | 'privileged-sunday';
|
export type TemporalCategory = 'ordinary-feria' | 'privileged-feria' | 'ordinary-sunday' | 'privileged-sunday';
|
||||||
|
|
||||||
export interface OccurringFeast {
|
export interface SanctoralIdentity {
|
||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
rank: FeastClass;
|
rank: FeastClass;
|
||||||
commemorated: boolean;
|
|
||||||
// Set by calendar/vespers.ts's resolveEveningDay when this feast's First
|
|
||||||
// Vespers is being anticipated this evening (i.e. this OccurringFeast
|
|
||||||
// belongs to *tomorrow*, but is winning tonight's Vespers/Compline).
|
|
||||||
vespersFrom?: 'today' | 'firstVespersOfTomorrow';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type DayWinner =
|
||||||
|
| { kind: 'temporal'; id: string }
|
||||||
|
| ({
|
||||||
|
kind: 'sanctoral';
|
||||||
|
// Set by calendar/vespers.ts's resolveEveningDay when this feast's
|
||||||
|
// First Vespers is being anticipated this evening (i.e. this feast
|
||||||
|
// belongs to *tomorrow*, but is winning tonight's Vespers/Compline).
|
||||||
|
vespersFrom?: 'firstVespersOfTomorrow';
|
||||||
|
} & SanctoralIdentity);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A day can have more than one of these at once (a transferred feast can
|
||||||
|
* displace a native saint who then also gets commemorated, alongside the
|
||||||
|
* Sunday whose own occurrence pushed the transfer in the first place) —
|
||||||
|
* hence a list, not a single flag. Extensible on purpose: a future
|
||||||
|
* `{ kind: 'octave'; id: string }` variant joins this union once octaves
|
||||||
|
* are modeled, without changing the shape callers already rely on.
|
||||||
|
*/
|
||||||
|
export type Commemoration = { kind: 'temporal'; id: string } | ({ kind: 'sanctoral' } & SanctoralIdentity);
|
||||||
|
|
||||||
export interface LiturgicalDay {
|
export interface LiturgicalDay {
|
||||||
/** ISO date, e.g. "2026-08-09" */
|
/** ISO date, e.g. "2026-08-09" */
|
||||||
date: string;
|
date: string;
|
||||||
@@ -76,6 +106,8 @@ export interface LiturgicalDay {
|
|||||||
season: Season;
|
season: Season;
|
||||||
/** This day's own precedence class, before any sanctoral feast wins or loses against it. */
|
/** This day's own precedence class, before any sanctoral feast wins or loses against it. */
|
||||||
temporalCategory: TemporalCategory;
|
temporalCategory: TemporalCategory;
|
||||||
/** The feast(s) actually occurring — real, via calendar/feasts.ts + calendar/commemorations.ts. */
|
/** Whichever office actually governs the day. */
|
||||||
occurring: OccurringFeast[];
|
winner: DayWinner;
|
||||||
|
/** Everything else commemorated alongside the winner — see the doc comment on Commemoration. */
|
||||||
|
commemorations: Commemoration[];
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-17
@@ -8,7 +8,7 @@
|
|||||||
// Same reconstruction caveat as commemorations.ts/temporal-categories.yml:
|
// Same reconstruction caveat as commemorations.ts/temporal-categories.yml:
|
||||||
// best-effort, not sourced from a primary text for this era, expect
|
// best-effort, not sourced from a primary text for this era, expect
|
||||||
// corrections.
|
// corrections.
|
||||||
import type { LiturgicalDay, OccurringFeast } from './types';
|
import type { LiturgicalDay } from './types';
|
||||||
import { resolveDay } from './index';
|
import { resolveDay } from './index';
|
||||||
import { addDays } from './date-math';
|
import { addDays } from './date-math';
|
||||||
import { easterOffsetOf } from './temporal';
|
import { easterOffsetOf } from './temporal';
|
||||||
@@ -32,17 +32,12 @@ function isMajorFixedFeastOfTheLord(isoDate: string): boolean {
|
|||||||
return offset === 0 || offset === 39 || offset === 60 || offset === 68; // Easter, Ascension, Corpus Christi, Sacred Heart
|
return offset === 0 || offset === 39 || offset === 60 || offset === 68; // Easter, Ascension, Corpus Christi, Sacred Heart
|
||||||
}
|
}
|
||||||
|
|
||||||
function winningFeast(day: LiturgicalDay): OccurringFeast | undefined {
|
|
||||||
return day.occurring.find((feast) => !feast.commemorated);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Does this day's evening claim First Vespers at all (for the day *after* it)? */
|
/** Does this day's evening claim First Vespers at all (for the day *after* it)? */
|
||||||
function hasFirstVespers(day: LiturgicalDay): boolean {
|
function hasFirstVespers(day: LiturgicalDay): boolean {
|
||||||
if (day.weekday === 'sunday' || isMajorFixedFeastOfTheLord(day.date)) {
|
if (day.weekday === 'sunday' || isMajorFixedFeastOfTheLord(day.date)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
const winner = winningFeast(day);
|
return day.winner.kind === 'sanctoral' && isAtLeast(day.winner.rank, 'duplex-majus');
|
||||||
return winner ? isAtLeast(winner.rank, 'duplex-majus') : false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Does this day keep its own Second Vespers regardless of what tomorrow is? */
|
/** Does this day keep its own Second Vespers regardless of what tomorrow is? */
|
||||||
@@ -50,17 +45,14 @@ function keepsOwnSecondVespers(day: LiturgicalDay): boolean {
|
|||||||
if (day.weekday === 'sunday' || day.temporalCategory === 'privileged-feria' || isMajorFixedFeastOfTheLord(day.date)) {
|
if (day.weekday === 'sunday' || day.temporalCategory === 'privileged-feria' || isMajorFixedFeastOfTheLord(day.date)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
const winner = winningFeast(day);
|
return day.winner.kind === 'sanctoral' && isAtLeast(day.winner.rank, 'duplex-2-classis');
|
||||||
return winner ? isAtLeast(winner.rank, 'duplex-2-classis') : false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function anticipated(tomorrow: LiturgicalDay): LiturgicalDay {
|
function anticipated(tomorrow: LiturgicalDay): LiturgicalDay {
|
||||||
return {
|
if (tomorrow.winner.kind === 'sanctoral') {
|
||||||
...tomorrow,
|
return { ...tomorrow, winner: { ...tomorrow.winner, vespersFrom: 'firstVespersOfTomorrow' } };
|
||||||
occurring: tomorrow.occurring.map((feast) =>
|
}
|
||||||
feast.commemorated ? feast : { ...feast, vespersFrom: 'firstVespersOfTomorrow' },
|
return tomorrow;
|
||||||
),
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -68,10 +60,10 @@ function anticipated(tomorrow: LiturgicalDay): LiturgicalDay {
|
|||||||
* Returns `resolveDay(isoDate)` unchanged unless tomorrow has First
|
* Returns `resolveDay(isoDate)` unchanged unless tomorrow has First
|
||||||
* Vespers *and* today doesn't keep its own Second Vespers regardless — in
|
* Vespers *and* today doesn't keep its own Second Vespers regardless — in
|
||||||
* which case returns tomorrow's `LiturgicalDay`, with `vespersFrom:
|
* which case returns tomorrow's `LiturgicalDay`, with `vespersFrom:
|
||||||
* 'firstVespersOfTomorrow'` set on its winning feast (if any) so callers
|
* 'firstVespersOfTomorrow'` set on its winner (if sanctoral) so callers
|
||||||
* can tell the difference from an ordinary day.
|
* can tell the difference from an ordinary day.
|
||||||
*
|
*
|
||||||
* One deliberate exception to that ordering: a day on
|
* One deliberate absolute exception, caught by a failing test: a day on
|
||||||
* `isMajorFixedFeastOfTheLord`'s list always wins tomorrow's Vespers,
|
* `isMajorFixedFeastOfTheLord`'s list always wins tomorrow's Vespers,
|
||||||
* *before* checking whether today would otherwise keep its own — Easter
|
* *before* checking whether today would otherwise keep its own — Easter
|
||||||
* displaces even Holy Saturday's privileged-feria status (the classic
|
* displaces even Holy Saturday's privileged-feria status (the classic
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# A real vigil, used as the concrete first test case for the vigil rank
|
||||||
|
# and its backward-transfer rule (see calendar/commemorations.ts and
|
||||||
|
# calendar/index.ts) — vigils are the day *before* their feast (St.
|
||||||
|
# Lawrence is Aug 10, so this is Aug 9), and if that date is impeded (e.g.
|
||||||
|
# falls on a Sunday), it transfers to the day before instead of forward.
|
||||||
|
id: vigil-of-st-lawrence
|
||||||
|
name: "Vigil of St. Lawrence"
|
||||||
|
rank: vigil
|
||||||
|
common: common-of-a-vigil
|
||||||
|
propers: null
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
# privileged-day lists. `example-confessor` is deliberately NOT mapped to
|
# privileged-day lists. `example-confessor` is deliberately NOT mapped to
|
||||||
# any day here — it's fictional, kept only to document the record shape.
|
# any day here — it's fictional, kept only to document the record shape.
|
||||||
days:
|
days:
|
||||||
|
"08-09": [vigil-of-st-lawrence]
|
||||||
"08-10": [st-lawrence]
|
"08-10": [st-lawrence]
|
||||||
"08-15": [assumption]
|
"08-15": [assumption]
|
||||||
"08-28": [st-augustine]
|
"08-28": [st-augustine]
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: advent-1-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Excita, quǽsumus, Dómine, poténtiam tuam, et veni: ut ab imminéntibus peccatórum nostrórum perículis, te mereámur protegénte éripi, te liberánte salvári:
|
||||||
|
Qui vivis et regnas cum Deo Patre, in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Stir up, O Lord, we pray thee, thy strength, and come among us, that whereas through our sins and wickedness we do justly apprehend thy wrathful judgments hanging over us, thy bountiful grace and mercy may speedily help and deliver us;
|
||||||
|
Who livest and reignest with God the Father in the unity of the Holy Spirit, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: advent-2-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Excita, Dómine, corda nostra ad præparándas Unigéniti tui vias: ut, per ejus advéntum, purificátis tibi méntibus servíre mereámur:
|
||||||
|
Qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Stir up our hearts, O Lord, to make ready the ways of thine Only-begotten Son, that by His coming our minds being purified, we may the more worthily give up ourselves to thy service:
|
||||||
|
Who with thee liveth and reigneth, in the unity of the Holy Spirit, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: advent-3-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Aurem tuam, quǽsumus, Dómine, précibus nostris accómmoda: et mentis nostræ ténebras, grátia tuæ visitatiónis illústra:
|
||||||
|
Qui vivis et regnas cum Deo Patre, in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O Lord, we beseech thee, mercifully incline thine ears unto our prayers, and lighten the darkness of our minds by the grace of thy heavenly visitation.
|
||||||
|
Who livest and reignest with God the Father in the unity of the Holy Spirit, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: advent-4-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Excita, quǽsumus, Dómine, poténtiam tuam, et veni: et magna nobis virtúte succúrre; ut per auxílium grátiæ tuæ, quod nostra peccáta præpédiunt, indulgéntia tuæ propitiatiónis accéleret:
|
||||||
|
Qui vivis et regnas cum Deo Patre, in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Stir up, we beseech thee, O Lord, thy power, and come; make haste to our aid with thy great might; that, by the help of thy grace, that which is hindered by our sins may be hastened by thy merciful forgiveness.
|
||||||
|
Who livest and reignest with God the Father in the unity of the Holy Spirit, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: christmas-octave-sunday-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Omnípotens sempitérne Deus, dírige actus nostros in beneplácito tuo: ut in nómine dilécti Fílii tui mereámur bonis opéribus abundáre:
|
||||||
|
Qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O Almighty and everlasting God, do Thou order all our actions in conformity with thy good pleasure, that through the name of thy well-beloved Son, we may worthily abound in all good works.
|
||||||
|
Who with thee liveth and reigneth, in the unity of the Holy Spirit, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
#
|
||||||
|
# A real saint outranks this Sunday on every candidate year checked (2020-
|
||||||
|
# 2060), so this was read directly from the Latin/English Tempora source
|
||||||
|
# file plus the standard closing-formula macro
|
||||||
|
# (Psalterium/Common/Prayers.txt's [Per Dominum]/[Per eumdem]) rather than
|
||||||
|
# a live date query.
|
||||||
|
id: easter-3-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, qui in Fílii tui humilitáte jacéntem mundum erexísti: fidélibus tuis perpétuam concéde lætítiam; ut, quos perpétuæ mortis eripuísti cásibus, gáudiis fácias pérfrui sempitérnis.
|
||||||
|
Per eúmdem Dóminum nostrum Jesum Christum Fílium tuum, qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O God, Whose Son hath humbled Himself, and Who hast through Him raised up the whole world, grant to thy faithful people everlasting joy; and as Thou hast delivered them from the bitter pains of eternal death, make them to be glad for ever in thy presence.
|
||||||
|
Through the same Jesus Christ, thy Son, Our Lord, Who liveth and reigneth with thee in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
#
|
||||||
|
# A real saint outranks this Sunday on every candidate year checked (2020-
|
||||||
|
# 2060), so this was read directly from the Latin/English Tempora source
|
||||||
|
# file plus the standard closing-formula macro
|
||||||
|
# (Psalterium/Common/Prayers.txt's [Per Dominum]/[Per eumdem]) rather than
|
||||||
|
# a live date query.
|
||||||
|
id: easter-4-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, qui errántibus, ut in viam possint redíre justítiæ, veritátis tuæ lumen osténdis: da cunctis, qui christiána professióne censéntur, et illa respúere, quæ huic inimíca sunt nómini; et ea, quæ sunt apta, sectári.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Almighty God, Who showest to them that be in error the light of thy truth, to the intent that they may return into the way of righteousness grant unto all them that are admitted into the fellowship of Christ's Religion, that they may eschew those things that are contrary to their profession, and follow all such things as are agreeable to the same.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: easter-5-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, qui fidélium mentes uníus éfficis voluntátis: da pópulis tuis id amáre quod prǽcipis, id desideráre quod promíttis; ut inter mundánas varietátes ibi nostra fixa sint corda, ubi vera sunt gáudia.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O God, of Whom it cometh that the minds of thy faithful people be all of one will, grant unto the same thy people that they may love the thing which Thou commandest, and desire that which Thou dost promise, that so, amid the sundry and manifold changes of the world, our hearts may surely there be fixed, where true joys are to be found.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
#
|
||||||
|
# A real saint outranks this Sunday on every candidate year checked (2020-
|
||||||
|
# 2060), so this was read directly from the Latin/English Tempora source
|
||||||
|
# file plus the standard closing-formula macro
|
||||||
|
# (Psalterium/Common/Prayers.txt's [Per Dominum]/[Per eumdem]) rather than
|
||||||
|
# a live date query.
|
||||||
|
id: easter-6-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, a quo bona cuncta procédunt, largíre supplícibus tuis: ut cogitémus, te inspiránte, quæ recta sunt; et, te gubernánte, éadem faciámus.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O God, from Whom all good things do come, grant to us thy humble servants that by thy holy inspiration we may think those things that be good, and by thy merciful guiding may perform the same.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: easter-octave-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Præsta, quǽsumus, omnípotens Deus: ut qui paschália festa perégimus, hæc, te largiénte, móribus et vita teneámus.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Grant, we beseech Thee, almighty God, that we who have celebrated the Paschal Feast, may, by Thy bounty, retain its fruits in our daily habits and behaviour.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: easter-sunday-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, qui hodiérna die per Unigénitum tuum æternitátis nobis áditum devícta morte reserásti: vota nostra, quæ præveniéndo aspíras, étiam adjuvándo proséquere.
|
||||||
|
Per eúmdem Dóminum nostrum Jesum Christum Fílium tuum, qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
God, who on this day, through thy Only-begotten Son, overcame death, and opened to us the gate of everlasting life: as by thy anticipating grace, thou breathest good desires into our hearts, so also, by thy gracious help, bring them to good effect.
|
||||||
|
Through the same Jesus Christ, thy Son, Our Lord, Who liveth and reigneth with thee in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: lent-1-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, qui Ecclésiam tuam ánnua quadragesimáli observatióne puríficas: præsta famíliæ tuæ; ut, quod a te obtinére abstinéndo nítitur, hoc bonis opéribus exsequátur.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O God, Who dost every year purge thy Church by the Fast of Forty Days, grant unto this thy family, that what things soever they strive to obtain at thy hand by abstaining from meats, they may ever turn to profit by good works.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: lent-2-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, qui cónspicis omni nos virtúte destítui: intérius exteriúsque custódi; ut ab ómnibus adversitátibus muniámur in córpore, et a pravis cogitatiónibus mundémur in mente.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O God, Who seest that we have no power of ourselves to help ourselves, keep us both outwardly in our bodies, and inwardly in our souls, that we may be defended from all adversities which may happen to the body, and from all evil thoughts which may assault and hurt the soul.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: lent-3-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Quǽsumus, omnípotens Deus, vota humílium réspice: atque ad defensiónem nostram, déxteram tuæ majestátis exténde.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
We beeseech thee, almighty God, look upon the hearty desires of thy humble servants, and stretch forth the right hand of thy Majesty to be our defense against all our enemies.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: lent-4-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Concéde, quǽsumus, omnípotens Deus: ut, qui ex mérito nostræ actiónis afflígimur, tuæ grátiæ consolatióne respirémus.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Grant, we beseech thee, Almighty God, that we who for our evil deeds are worthily punished, may, by the comfort of thy grace, mercifully be relieved.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: palm-sunday-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Omnípotens sempitérne Deus, qui humáno géneri, ad imitándum humilitátis exémplum, Salvatórem nostrum carnem súmere, et crucem subíre fecísti: concéde propítius; ut et patiéntiæ ipsíus habére documénta, et resurrectiónis consórtia mereámur.
|
||||||
|
Per eúmdem Dóminum nostrum Jesum Christum Fílium tuum, qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Almighty and everlasting God, Who, of thy tender love towards mankind, hast sent thy Son our Saviour Jesus Christ to take upon Him our flesh and to suffer death upon the Cross, that all mankind should follow the example of His great humility; mercifully grant, that we may both follow the example of His patience, and also be made partakers of His resurrection.
|
||||||
|
Through the same Jesus Christ, thy Son, Our Lord, Who liveth and reigneth with thee in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: passion-sunday-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Quǽsumus, omnípotens Deus, famíliam tuam propítius réspice: ut, te largiénte, regátur in córpore; et, te servánte, custodiátur in mente.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
We beseech thee, Almighty God, mercifully to look upon this thy family, that by thy great goodness they may be governed and preserved evermore, both in body and soul.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: pentecost-sunday-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, qui hodiérna die corda fidélium Sancti Spíritus illustratióne docuísti: da nobis in eódem Spíritu recta sápere; et de ejus semper consolatióne gaudére.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte ejúsdem Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O God, Who on this day didst teach the hearts of thy faithful people, by the sending to them the light of thine Holy Spirit, grant us by the same Spirit to have a right judgment in all things, and evermore to rejoice in His holy comfort.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the same Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-epiphany-1-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Vota, quǽsumus, Dómine, supplicántis pópuli cælésti pietáte proséquere: ut et quæ agénda sunt, vídeant, et ad implénda quæ víderint, convaléscant.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Attend, O Lord, we beseech thee, of thy heavenly mercy, to the desires of thy suppliant people; and grant that they may both perceive what they ought to do, and may have strength to fulfill the same.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
#
|
||||||
|
# A real saint outranks this Sunday on every candidate year checked (2020-
|
||||||
|
# 2060), so this was read directly from the Latin/English Tempora source
|
||||||
|
# file plus the standard closing-formula macro
|
||||||
|
# (Psalterium/Common/Prayers.txt's [Per Dominum]/[Per eumdem]) rather than
|
||||||
|
# a live date query.
|
||||||
|
id: post-epiphany-2-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Omnípotens sempitérne Deus, qui cæléstia simul et terréna moderáris: supplicatiónes pópuli tui cleménter exáudi; et pacem tuam nostris concéde tempóribus.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Almighty and eternal God, as thou govern all things in heaven and on earth; in thy mercy hear the supplication of thy people, and grant thy peace in our times.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-epiphany-3-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Omnípotens sempitérne Deus, infirmitátem nostram propítius réspice: atque, ad protegéndum nos, déxteram tuæ majestátis exténde.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Almighty and everlasting God, mercifully look upon our infirmities, and in all our dangers and necessities stretch forth the right hand of thy Majesty to help and defend us.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-epiphany-4-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, qui nos in tantis perículis constitútos, pro humána scis fragilitáte non posse subsístere: da nobis salútem mentis et córporis; ut ea, quæ pro peccátis nostris pátimur, te adjuvánte vincámus.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O God, Who knowest us to be set in the midst of so many and great dangers, that, by reason of the frailty of our nature, we cannot always stand upright; grant to us such health of mind and body, that by thy strength and protection we may overcome all evils, whereby for our sins we are justly afflicted.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
#
|
||||||
|
# A real saint outranks this Sunday on every candidate year checked (2020-
|
||||||
|
# 2060), so this was read directly from the Latin/English Tempora source
|
||||||
|
# file plus the standard closing-formula macro
|
||||||
|
# (Psalterium/Common/Prayers.txt's [Per Dominum]/[Per eumdem]) rather than
|
||||||
|
# a live date query.
|
||||||
|
id: post-epiphany-5-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Famíliam tuam, quǽsumus, Dómine, contínua pietáte custódi: ut, quæ in sola spe grátiæ cœléstis innítitur, tua semper protectióne muniátur.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O Lord, we beseech thee to keep thy family continually in godliness, that they who do lean only upon the hope of thine heavenly grace, may evermore be defended by thy mighty power.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-epiphany-6-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Præsta, quǽsumus, omnípotens Deus: ut, semper rationabília meditántes, quæ tibi sunt plácita, et dictis exsequámur et factis.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Grant us, we beseech thee, O Almighty God, ever to think such things as be reasonable, and in every word and work of ours, to do always that is well pleasing in thy sight.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-01-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Omnípotens sempitérne Deus, qui dedísti fámulis tuis in confessióne veræ fídei, ætérnæ Trinitátis glóriam agnóscere, et in poténtia majestátis adoráre Unitátem: quǽsumus; ut, ejúsdem fídei firmitáte, ab ómnibus semper muniámur advérsis.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Almighty and everlasting God, you have given thy servants in the confession of the true faith, to acknowledge the glory of the Eternal Trinity, and to adore the unity in the power of thy Majesty; grant, that by steadfastness in this faith we may ever be defended from all adversities.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-02-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Sancti nóminis tui, Dómine, timórem páriter et amórem fac nos habére perpétuum: quia nunquam tua gubernatióne destítuis, quos in soliditáte tuæ dilectiónis instítuis.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O Lord, Who never failest to help and govern them whom Thou dost bring up in thy steadfast fear and love keep us, we beseech thee, under the protection of thy good providence, and make us to have a perpetual fear and love of thy Holy Name.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-03-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Protéctor in te sperántium, Deus, sine quo nihil est válidum, nihil sanctum; multíplica super nos misericórdiam tuam; ut, te rectóre, te duce, sic transeámus per bona temporália, ut non amittámus ætérna.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O God, the protector of all them that trust in thee, without whom nothing is strong, nothing is holy; increase and multiply upon us thy mercy, that thou being our ruler and guide, we may so pass through things temporal, that we finally lose not the things eternal.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-04-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Da nobis, quǽsumus, Dómine: ut et mundi cursus pacífice nobis tuo órdine dirigátur; et Ecclésia tua tranquílla devotióne lætétur.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Grant, O Lord, we beseech thee, that the course of this world may be so peaceably ordered by thy governance, that thy Church may joyfully serve thee in all godly quietness.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-05-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, qui diligéntibus te bona invisibília præparásti: infúnde córdibus nostris tui amóris afféctum; ut te in ómnibus et super ómnia diligéntes, promissiónes tuas, quæ omne desidérium súperant, consequámur.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O God, Who hast prepared for them that love thee such good things as pass man's understanding; pour into our hearts such love toward thee, that we, loving thee in all things and above all things, may obtain thy promises, which exceed all that we can desire.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-06-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus virtútum, cujus est totum quod est óptimum: ínsere pectóribus nostris amórem tui nóminis, et præsta in nobis religiónis augméntum; ut, quæ sunt bona, nútrias, ac pietátis stúdio, quæ sunt nutríta, custódias.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Lord of all power and might, Who art the Author and Giver of all good things, graft in our hearts the love of thy Name, increase in us true religion, nourish us with all goodness, and, of thy great mercy, keep us in the same.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-07-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, cujus providéntia in sui dispositióne non fállitur: te súpplices exorámus; ut nóxia cuncta submóveas, et ómnia nobis profutúra concédas.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O God, Whose never-failing Providence ordereth all things both in heaven and earth, we humbly beseech thee to put away from us all hurtful things, and to give us those things which be profitable for us.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-08-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Largíre nobis, quǽsumus, Dómine, semper spíritum cogitándi quæ recta sunt, propítius et agéndi: ut, qui sine te esse non póssumus, secúndum te vívere valeámus.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Grant to us, Lord, we beseech thee, the spirit to think and do always such things as be rightful, that we, who cannot do anything that is good without thee, may by thee be enabled to live according to thy will.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-09-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Páteant aures misericórdiæ tuæ, Dómine, précibus supplicántium: et, ut peténtibus desideráta concédas; fac eos, quæ tibi sunt plácita, postuláre.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Let thy merciful ears, O Lord, be open to the prayers of thy humble servants; and, that they may obtain their petitions, make them to ask such things as shall please thee.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-10-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, qui omnipoténtiam tuam parcéndo máxime et miserándo maniféstas: multíplica super nos misericórdiam tuam; ut, ad tua promíssa curréntes, cæléstium bonórum fácias esse consórtes.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O God, Who declarest thine Almighty power most chiefly in showing mercy and pity, mercifully grant unto us such a measure of thy grace, that we, running the way of thy commandments, may obtain thy gracious promises, and be made partakers of thy heavenly treasure.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-11-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Omnípotens sempitérne Deus, qui, abundántia pietátis tuæ, et mérita súpplicum excédis et vota: effúnde super nos misericórdiam tuam; ut dimíttas quæ consciéntia métuit, et adícias quod orátio non præsúmit.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Almighty and everlasting God, Who art always more ready to hear than we to pray, and art wont to give more than either we desire or deserve, pour down upon us the abundance of thy mercy, forgiving us those things whereof our conscience is afraid, and giving us those good things which we are not worthy to ask.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
#
|
||||||
|
# A real saint outranks this Sunday on every candidate year checked (2020-
|
||||||
|
# 2060), so this was read directly from the Latin/English Tempora source
|
||||||
|
# file plus the standard closing-formula macro
|
||||||
|
# (Psalterium/Common/Prayers.txt's [Per Dominum]/[Per eumdem]) rather than
|
||||||
|
# a live date query.
|
||||||
|
id: post-pentecost-12-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Omnípotens et miséricors Deus, de cujus múnere venit, ut tibi a fidélibus tuis digne et laudabíliter serviátur: tríbue, quǽsumus, nobis; ut ad promissiónes tuas sine offensióne currámus.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Almighty and merciful God, of Whose only gift it cometh that thy faithful people do unto thee true and laudable service, grant, we beseech thee, that we may so faithfully serve thee in this life, that we fail not finally to attain thy heavenly promises.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-13-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Omnípotens sempitérne Deus, da nobis fídei, spei et caritátis augméntum: et, ut mereámur ássequi quod promíttis, fac nos amáre quod prǽcipis.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Almighty and everlasting God, give unto us the increase of faith, hope, and charity, and that we may worthily obtain that which Thou dost promise, make us to love that which Thou dost command.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-14-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Custódi, Dómine, quǽsumus, Ecclésiam tuam propitiatióne perpétua: et quia sine te lábitur humána mortálitas; tuis semper auxíliis et abstrahátur a nóxiis et ad salutária dirigátur.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Keep, we beseech thee, O Lord, thy Church with thy perpetual mercy, and because the frailty of man without thee cannot but fall, keep us ever by thy help from all things hurtful, and lead us to all things profitable to our salvation.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-15-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Ecclésiam tuam, Dómine, miserátio continuáta mundet et múniat: et quia sine te non potest salva consístere; tuo semper múnere gubernétur.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O Lord, we beseech thee, let thy continual pity cleanse and defend thy Church, and because it cannot continue in safety without thy succour, preserve it evermore by thy help and goodness.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-16-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Tua nos, quǽsumus, Dómine, grátia semper et prævéniat et sequátur: ac bonis opéribus júgiter præstet esse inténtos.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Lord, we pray thee, that thy grace may always prevent and follow us, and make us continually to be given to all good works.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-17-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Da, quǽsumus, Dómine, pópulo tuo diabólica vitáre contágia: et te solum Deum pura mente sectári.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O Lord, we beseech thee, grant thy people grace to withstand the temptations of the devil, and with pure hearts to follow thee the only God.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-18-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Dírigat corda nostra, quǽsumus, Dómine, tuæ miseratiónis operátio: quia tibi sine te placére non póssumus.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Mercifully grant, O Lord, that thine effectual goodness may in all things direct our hearts, forasmuch as without thee we are not able to please thee.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
#
|
||||||
|
# A real saint outranks this Sunday on every candidate year checked (2020-
|
||||||
|
# 2060), so this was read directly from the Latin/English Tempora source
|
||||||
|
# file plus the standard closing-formula macro
|
||||||
|
# (Psalterium/Common/Prayers.txt's [Per Dominum]/[Per eumdem]) rather than
|
||||||
|
# a live date query.
|
||||||
|
id: post-pentecost-19-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Omnípotens et miséricors Deus, univérsa nobis adversántia propitiátus exclúde: ut mente et córpore páriter expedíti, quæ tua sunt, líberis méntibus exsequámur.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O Almighty and most merciful God, of thy bountiful goodness keep us, we beseech thee, from all things that may hurt us; that we, being ready both in body and soul, may cheerfully accomplish those things that Thou wouldest have done.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-20-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Largíre, quǽsumus, Dómine, fidélibus tuis indulgéntiam placátus et pacem: ut páriter ab ómnibus mundéntur offénsis, et secúra tibi mente desérviant.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Grant, we beseech thee, O Lord, to thy faithful people pardon and peace, that they may be cleansed from all their sins, and serve thee with a quiet mind.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-21-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Famíliam tuam, quǽsumus, Dómine, contínua pietáte custódi: ut a cunctis adversitátibus te protegénte, sit líbera; et in bonis áctibus tuo nómini sit devóta.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O Lord, we beseech thee to keep thine household in continual godliness, that, through thy protection, it may be free from all adversities, and devoutly given to serve thee in good works, to the glory of thy Name.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-22-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, refúgium nostrum et virtus: adésto piis Ecclésiæ tuæ précibus, auctor ipse pietátis, et præsta; ut, quod fidéliter pétimus, efficáciter consequámur.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O God, our Refuge and Strength, Who art the author of all godliness, be ready, we beseech thee, to hear the devout prayers of thy Church, and grant that those things which we ask faithfully, we may obtain effectually.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
#
|
||||||
|
# A real saint outranks this Sunday on every candidate year checked (2020-
|
||||||
|
# 2060), so this was read directly from the Latin/English Tempora source
|
||||||
|
# file plus the standard closing-formula macro
|
||||||
|
# (Psalterium/Common/Prayers.txt's [Per Dominum]/[Per eumdem]) rather than
|
||||||
|
# a live date query.
|
||||||
|
id: post-pentecost-23-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Absólve, quǽsumus, Dómine, tuórum delícta populórum: ut a peccatórum néxibus, quæ pro nostra fragilitáte contráximus, tua benignitáte liberémur.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O Lord, we beseech thee, absolve thy people from their offences, that through thy bountiful goodness we may all be delivered from the bands of those sins, which by our frailty we have committed.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: post-pentecost-24-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Excita, quǽsumus, Dómine, tuórum fidélium voluntátes: ut, divíni óperis fructum propénsius exsequéntes; pietátis tuæ remédia majóra percípiant.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
Stir up, we beseech thee, Lord, the wills of thy faithful people, that they, plenteously bringing forth the fruit of good works, may of thee be plenteously rewarded.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: quinquagesima-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Preces nostras, quǽsumus, Dómine, cleménter exáudi: atque, a peccatórum vínculis absolútos, ab omni nos adversitáte custódi.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O Lord, we beseech You, mercifully hear our prayers; loose us from the chains of our sins and keep us from all adversity.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: septuagesima-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Preces pópuli tui, quǽsumus, Dómine, cleménter exáudi: ut, qui juste pro peccátis nostris afflígimur, pro tui nóminis glória misericórditer liberémur.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O Lord, we beseech thee favourably to hear the prayers of thy people; that we, who are justly punished for our offences, may be mercifully delivered by thy goodness, for the glory of thy Name.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: sexagesima-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Deus, qui cónspicis, quia ex nulla nostra actióne confídimus: concéde propítius; ut, contra advérsa ómnia Doctóris géntium protectióne muniámur.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O God, Who seest that we put not our trust in anything that we do, mercifully grant that through the protection of the Teacher of the Gentiles we may be defended against all adversity.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
|
||||||
|
# directly from the reference engine's own real-date output (not
|
||||||
|
# reconstructed from memory). Keyed Pentecost/offset-based
|
||||||
|
# ("post-pentecost-N") rather than Trinity-counted deliberately: this is
|
||||||
|
# content storage, kept scheme-agnostic, independent of whatever counting
|
||||||
|
# convention calendar/day-label.ts shows on screen for the same Sunday.
|
||||||
|
id: sunday-after-ascension-collect
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Orémus.
|
||||||
|
Omnípotens sempitérne Deus: fac nos tibi semper et devótam gérere voluntátem; et majestáti tuæ sincéro corde servíre.
|
||||||
|
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
|
||||||
|
R. Amen.
|
||||||
|
en: |
|
||||||
|
Let us pray.
|
||||||
|
O Almighty and everlasting God, grant that our will be ever meekly subject unto thy will, and our heart ever honestly ready to serve thy majesty.
|
||||||
|
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
|
||||||
|
R. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { OccurringFeast } from '../calendar/types';
|
import type { DayWinner } from '../calendar/types';
|
||||||
import { isAtLeast } from '../calendar/commemorations';
|
import { isAtLeast } from '../calendar/commemorations';
|
||||||
|
|
||||||
export interface SplitAntiphon {
|
export interface SplitAntiphon {
|
||||||
@@ -31,13 +31,12 @@ export function splitAntiphon(text: string): SplitAntiphon {
|
|||||||
* said before the psalms (the full text is always said after, regardless
|
* said before the psalms (the full text is always said after, regardless
|
||||||
* of rank).
|
* of rank).
|
||||||
*
|
*
|
||||||
* Only asks whether the day's *winning* feast (not a merely-commemorated
|
* Only asks whether the day's *winner* (not a merely-commemorated feast)
|
||||||
* one) is Double-or-higher — a privileged Sunday with nothing occurring,
|
* is Double-or-higher — a privileged Sunday with nothing winning, or a
|
||||||
* or a commemorated low-rank saint, both correctly return false here. A
|
* commemorated low-rank saint, both correctly return false here. A Sunday
|
||||||
* Sunday being "privileged" doesn't by itself make this true; that's a
|
* being "privileged" doesn't by itself make this true; that's a
|
||||||
* `TemporalCategory` question, not a `FeastClass` one.
|
* `TemporalCategory` question, not a `FeastClass` one.
|
||||||
*/
|
*/
|
||||||
export function isDoubleOrHigher(occurring: OccurringFeast[]): boolean {
|
export function isDoubleOrHigher(winner: DayWinner): boolean {
|
||||||
const winner = occurring.find((feast) => !feast.commemorated);
|
return winner.kind === 'sanctoral' && isAtLeast(winner.rank, 'duplex');
|
||||||
return winner ? isAtLeast(winner.rank, 'duplex') : false;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { Season, OccurringFeast } from '../calendar/types';
|
import type { Season, DayWinner } from '../calendar/types';
|
||||||
import { resolveSeasonalPropersId } from './seasonal-propers';
|
import { resolveSeasonalPropersId } from './seasonal-propers';
|
||||||
import bySeasonData from '../data/hours/prime-chapter-responsory-by-season.yml';
|
import bySeasonData from '../data/hours/prime-chapter-responsory-by-season.yml';
|
||||||
import byFeastData from '../data/hours/prime-chapter-responsory-by-feast.yml';
|
import byFeastData from '../data/hours/prime-chapter-responsory-by-feast.yml';
|
||||||
@@ -7,6 +7,6 @@ const bySeason = bySeasonData as { perAnnum: string; bySeason: Record<string, st
|
|||||||
const byFeast = byFeastData as { byFeastId: Record<string, string> };
|
const byFeast = byFeastData as { byFeastId: Record<string, string> };
|
||||||
|
|
||||||
/** Resolves the common-propers id for the chapter responsory's variable verse. */
|
/** Resolves the common-propers id for the chapter responsory's variable verse. */
|
||||||
export function getChapterResponsoryId(season: Season, occurring: OccurringFeast[]): string {
|
export function getChapterResponsoryId(season: Season, winner: DayWinner): string {
|
||||||
return resolveSeasonalPropersId(season, occurring, { ...bySeason, byFeastId: byFeast.byFeastId });
|
return resolveSeasonalPropersId(season, winner, { ...bySeason, byFeastId: byFeast.byFeastId });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
|
|||||||
}
|
}
|
||||||
const body = resolveCommon(part.textRef.id);
|
const body = resolveCommon(part.textRef.id);
|
||||||
const doxology = resolveCommon(
|
const doxology = resolveCommon(
|
||||||
getHymnDoxologyId(day.season, day.occurring, 'compline-hymn-doxology-per-annum'),
|
getHymnDoxologyId(day.season, day.winner, 'compline-hymn-doxology-per-annum'),
|
||||||
);
|
);
|
||||||
return [{ kind: 'hymn', text: appendDoxology(body, doxology) }];
|
return [{ kind: 'hymn', text: appendDoxology(body, doxology) }];
|
||||||
}
|
}
|
||||||
@@ -42,14 +42,14 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
|
|||||||
case 'prayer':
|
case 'prayer':
|
||||||
return [{ kind: part.kind, text: resolveCommon(part.textRef.id) }];
|
return [{ kind: part.kind, text: resolveCommon(part.textRef.id) }];
|
||||||
case 'preces':
|
case 'preces':
|
||||||
if (part.omitOnDouble && isDoubleOrHigher(day.occurring)) {
|
if (part.omitOnDouble && isDoubleOrHigher(day.winner)) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
return [{ kind: 'preces', text: resolveCommon(part.textRef.id), label: part.label }];
|
return [{ kind: 'preces', text: resolveCommon(part.textRef.id), label: part.label }];
|
||||||
case 'lesson':
|
case 'lesson':
|
||||||
return [{ kind: 'lesson', text: resolveCommon(part.textRef.id), label: part.label }];
|
return [{ kind: 'lesson', text: resolveCommon(part.textRef.id), label: part.label }];
|
||||||
case 'opening-versicle':
|
case 'opening-versicle':
|
||||||
return [{ kind: 'versicle', text: resolveCommon(getOpeningVersicleId(day.season, day.occurring)) }];
|
return [{ kind: 'versicle', text: resolveCommon(getOpeningVersicleId(day.season, day.winner)) }];
|
||||||
case 'psalm':
|
case 'psalm':
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
@@ -64,7 +64,7 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
|
|||||||
];
|
];
|
||||||
case 'nunc-dimittis': {
|
case 'nunc-dimittis': {
|
||||||
const { incipit, full } = splitNamedAntiphon(getCommonProper('nunc-dimittis-antiphon').text);
|
const { incipit, full } = splitNamedAntiphon(getCommonProper('nunc-dimittis-antiphon').text);
|
||||||
const opening = isDoubleOrHigher(day.occurring) ? full : incipit;
|
const opening = isDoubleOrHigher(day.winner) ? full : incipit;
|
||||||
return [
|
return [
|
||||||
{ kind: 'canticle', canticleId: 'nunc-dimittis', text: resolveCommon('nunc-dimittis'), antiphon: opening },
|
{ kind: 'canticle', canticleId: 'nunc-dimittis', text: resolveCommon('nunc-dimittis'), antiphon: opening },
|
||||||
{ kind: 'antiphon', text: full },
|
{ kind: 'antiphon', text: full },
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { Season, OccurringFeast } from '../calendar/types';
|
import type { Season, DayWinner } from '../calendar/types';
|
||||||
import { resolveSeasonalPropersId } from './seasonal-propers';
|
import { resolveSeasonalPropersId } from './seasonal-propers';
|
||||||
import bySeasonData from '../data/hours/hymn-doxology-by-season.yml';
|
import bySeasonData from '../data/hours/hymn-doxology-by-season.yml';
|
||||||
import byFeastData from '../data/hours/hymn-doxology-by-feast.yml';
|
import byFeastData from '../data/hours/hymn-doxology-by-feast.yml';
|
||||||
@@ -12,8 +12,8 @@ const byFeast = byFeastData as { byFeastId: Record<string, string> };
|
|||||||
* Officium's own Doxologies.txt table is hymn-agnostic), but the per-annum
|
* Officium's own Doxologies.txt table is hymn-agnostic), but the per-annum
|
||||||
* default is each hymn's own natural ending, so callers supply it.
|
* default is each hymn's own natural ending, so callers supply it.
|
||||||
*/
|
*/
|
||||||
export function getHymnDoxologyId(season: Season, occurring: OccurringFeast[], perAnnumId: string): string {
|
export function getHymnDoxologyId(season: Season, winner: DayWinner, perAnnumId: string): string {
|
||||||
return resolveSeasonalPropersId(season, occurring, {
|
return resolveSeasonalPropersId(season, winner, {
|
||||||
perAnnum: perAnnumId,
|
perAnnum: perAnnumId,
|
||||||
bySeason: bySeason.bySeason,
|
bySeason: bySeason.bySeason,
|
||||||
byFeastId: byFeast.byFeastId,
|
byFeastId: byFeast.byFeastId,
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ export function getMarianAntiphonId(day: LiturgicalDay): string {
|
|||||||
if (isCandlemasToHolyWednesday(day.date)) {
|
if (isCandlemasToHolyWednesday(day.date)) {
|
||||||
return AVE_REGINA_CAELORUM_ID;
|
return AVE_REGINA_CAELORUM_ID;
|
||||||
}
|
}
|
||||||
return resolveSeasonalPropersId(day.season, day.occurring, bySeason);
|
return resolveSeasonalPropersId(day.season, day.winner, bySeason);
|
||||||
}
|
}
|
||||||
|
|
||||||
const LABELS: Record<string, string> = {
|
const LABELS: Record<string, string> = {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import type { Season, OccurringFeast } from '../calendar/types';
|
import type { Season, DayWinner } from '../calendar/types';
|
||||||
import { resolveSeasonalPropersId } from './seasonal-propers';
|
import { resolveSeasonalPropersId } from './seasonal-propers';
|
||||||
import bySeasonData from '../data/hours/opening-by-season.yml';
|
import bySeasonData from '../data/hours/opening-by-season.yml';
|
||||||
|
|
||||||
const bySeason = bySeasonData as { perAnnum: string; bySeason: Record<string, string> };
|
const bySeason = bySeasonData as { perAnnum: string; bySeason: Record<string, string> };
|
||||||
|
|
||||||
/** Resolves the common-propers id for the opening versicle's ending (Allelúja vs. Laus tibi). */
|
/** Resolves the common-propers id for the opening versicle's ending (Allelúja vs. Laus tibi). */
|
||||||
export function getOpeningVersicleId(season: Season, occurring: OccurringFeast[]): string {
|
export function getOpeningVersicleId(season: Season, winner: DayWinner): string {
|
||||||
return resolveSeasonalPropersId(season, occurring, bySeason);
|
return resolveSeasonalPropersId(season, winner, bySeason);
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-7
@@ -21,7 +21,7 @@ function resolvePart(part: HourPart, date: string, day: LiturgicalDay): Resolved
|
|||||||
switch (part.kind) {
|
switch (part.kind) {
|
||||||
case 'hymn': {
|
case 'hymn': {
|
||||||
const body = resolveCommon(part.textRef.id);
|
const body = resolveCommon(part.textRef.id);
|
||||||
const doxology = resolveCommon(getHymnDoxologyId(day.season, day.occurring, 'hymn-doxology-per-annum'));
|
const doxology = resolveCommon(getHymnDoxologyId(day.season, day.winner, 'hymn-doxology-per-annum'));
|
||||||
return [{ kind: 'hymn', text: appendDoxology(body, doxology) }];
|
return [{ kind: 'hymn', text: appendDoxology(body, doxology) }];
|
||||||
}
|
}
|
||||||
case 'chapter':
|
case 'chapter':
|
||||||
@@ -30,14 +30,14 @@ function resolvePart(part: HourPart, date: string, day: LiturgicalDay): Resolved
|
|||||||
case 'prayer':
|
case 'prayer':
|
||||||
return [{ kind: part.kind, text: resolveCommon(part.textRef.id) }];
|
return [{ kind: part.kind, text: resolveCommon(part.textRef.id) }];
|
||||||
case 'preces':
|
case 'preces':
|
||||||
if (part.omitOnDouble && isDoubleOrHigher(day.occurring)) {
|
if (part.omitOnDouble && isDoubleOrHigher(day.winner)) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
return [{ kind: 'preces', text: resolveCommon(part.textRef.id), label: part.label }];
|
return [{ kind: 'preces', text: resolveCommon(part.textRef.id), label: part.label }];
|
||||||
case 'lesson':
|
case 'lesson':
|
||||||
return [{ kind: 'lesson', text: resolveCommon(part.textRef.id), label: part.label }];
|
return [{ kind: 'lesson', text: resolveCommon(part.textRef.id), label: part.label }];
|
||||||
case 'opening-versicle':
|
case 'opening-versicle':
|
||||||
return [{ kind: 'versicle', text: resolveCommon(getOpeningVersicleId(day.season, day.occurring)) }];
|
return [{ kind: 'versicle', text: resolveCommon(getOpeningVersicleId(day.season, day.winner)) }];
|
||||||
case 'creed':
|
case 'creed':
|
||||||
// Real Divinum Officium's actual inclusion rule tangles together
|
// Real Divinum Officium's actual inclusion rule tangles together
|
||||||
// rank, commemorations, and version-specific rubrics in a way that
|
// rank, commemorations, and version-specific rubrics in a way that
|
||||||
@@ -45,7 +45,7 @@ function resolvePart(part: HourPart, date: string, day: LiturgicalDay): Resolved
|
|||||||
// Sunday and not a Double-or-higher feast. Octaves aren't modeled at
|
// Sunday and not a Double-or-higher feast. Octaves aren't modeled at
|
||||||
// all yet (milestone 4), so they can't suppress it either, same as
|
// all yet (milestone 4), so they can't suppress it either, same as
|
||||||
// isDoubleOrHigher's own limitation.
|
// isDoubleOrHigher's own limitation.
|
||||||
if (day.weekday !== 'sunday' || isDoubleOrHigher(day.occurring)) {
|
if (day.weekday !== 'sunday' || isDoubleOrHigher(day.winner)) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
return [{ kind: 'lesson', text: resolveCommon('athanasian-creed'), label: 'Athanasian Creed' }];
|
return [{ kind: 'lesson', text: resolveCommon('athanasian-creed'), label: 'Athanasian Creed' }];
|
||||||
@@ -55,7 +55,7 @@ function resolvePart(part: HourPart, date: string, day: LiturgicalDay): Resolved
|
|||||||
if (part.resolve === 'by-season') {
|
if (part.resolve === 'by-season') {
|
||||||
// Currently only the chapter responsory's verse uses this — see
|
// Currently only the chapter responsory's verse uses this — see
|
||||||
// hours/chapter-responsory.ts. by-feast-rank doesn't apply to Prime.
|
// hours/chapter-responsory.ts. by-feast-rank doesn't apply to Prime.
|
||||||
return [{ kind: 'responsory', text: resolveCommon(getChapterResponsoryId(day.season, day.occurring)) }];
|
return [{ kind: 'responsory', text: resolveCommon(getChapterResponsoryId(day.season, day.winner)) }];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
const psalmRefs = getPsalmsFor('prime', day.weekday);
|
const psalmRefs = getPsalmsFor('prime', day.weekday);
|
||||||
@@ -63,7 +63,7 @@ function resolvePart(part: HourPart, date: string, day: LiturgicalDay): Resolved
|
|||||||
// Full text on a Double-or-higher feast, otherwise just the incipit
|
// Full text on a Double-or-higher feast, otherwise just the incipit
|
||||||
// — see hours/antiphon.ts. The full repeat comes later, after the
|
// — see hours/antiphon.ts. The full repeat comes later, after the
|
||||||
// Creed (see 'closing-antiphon'), not tacked onto the last psalm.
|
// Creed (see 'closing-antiphon'), not tacked onto the last psalm.
|
||||||
const opening = isDoubleOrHigher(day.occurring) ? full : incipit;
|
const opening = isDoubleOrHigher(day.winner) ? full : incipit;
|
||||||
return psalmRefs.map((ref, i) => ({
|
return psalmRefs.map((ref, i) => ({
|
||||||
kind: 'psalm' as const,
|
kind: 'psalm' as const,
|
||||||
psalmNumber: ref.number,
|
psalmNumber: ref.number,
|
||||||
@@ -86,7 +86,7 @@ function resolvePart(part: HourPart, date: string, day: LiturgicalDay): Resolved
|
|||||||
case 'canticle':
|
case 'canticle':
|
||||||
return [{ kind: 'canticle', canticleId: part.canticleId, text: resolveCommon(part.textRef.id) }];
|
return [{ kind: 'canticle', canticleId: part.canticleId, text: resolveCommon(part.textRef.id) }];
|
||||||
case 'by-day-kind': {
|
case 'by-day-kind': {
|
||||||
if (part.omitOnDouble && isDoubleOrHigher(day.occurring)) {
|
if (part.omitOnDouble && isDoubleOrHigher(day.winner)) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
const ref = isSundayOrFeast(day) ? part.sundayOrFeastRef : part.ferialRef;
|
const ref = isSundayOrFeast(day) ? part.sundayOrFeastRef : part.ferialRef;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { Season, OccurringFeast } from '../calendar/types';
|
import type { Season, DayWinner } from '../calendar/types';
|
||||||
|
|
||||||
export interface SeasonalPropersTable {
|
export interface SeasonalPropersTable {
|
||||||
perAnnum: string;
|
perAnnum: string;
|
||||||
@@ -9,18 +9,13 @@ export interface SeasonalPropersTable {
|
|||||||
/**
|
/**
|
||||||
* Shared by everything that picks a common-propers id by season with a
|
* Shared by everything that picks a common-propers id by season with a
|
||||||
* per-feast override (the chapter responsory's verse, the hymn doxology,
|
* per-feast override (the chapter responsory's verse, the hymn doxology,
|
||||||
* and presumably more once milestone 4 lands) — feast overrides win over
|
* and presumably more once milestone 4 lands) — a feast override wins only
|
||||||
* season, which wins over the "per annum" default. `occurring` is always
|
* when that feast is the day's actual *winner* (not merely commemorated),
|
||||||
* [] until milestone 4, so today this always returns a season match or
|
* which wins over season, which wins over the "per annum" default.
|
||||||
* perAnnum.
|
|
||||||
*/
|
*/
|
||||||
export function resolveSeasonalPropersId(
|
export function resolveSeasonalPropersId(season: Season, winner: DayWinner, table: SeasonalPropersTable): string {
|
||||||
season: Season,
|
if (winner.kind === 'sanctoral') {
|
||||||
occurring: OccurringFeast[],
|
const override = table.byFeastId?.[winner.id];
|
||||||
table: SeasonalPropersTable,
|
|
||||||
): string {
|
|
||||||
for (const feast of occurring) {
|
|
||||||
const override = table.byFeastId?.[feast.id];
|
|
||||||
if (override) {
|
if (override) {
|
||||||
return override;
|
return override;
|
||||||
}
|
}
|
||||||
|
|||||||
+34
-9
@@ -1,19 +1,29 @@
|
|||||||
import type { ProperText } from './types';
|
import type { ProperText } from './types';
|
||||||
|
|
||||||
// Only the "common" propers store exists so far — sanctoral/temporal propers
|
// "common" and "temporal" propers stores exist; "sanctoral" propers text
|
||||||
// (source: 'sanctoral' | 'temporal') are milestone-4 concerns and have no
|
// (as opposed to calendar/feasts.ts's rank/name metadata) doesn't yet —
|
||||||
// data directory yet.
|
// none of the 7 saints in data/calendar/saints/*.yml have real collect
|
||||||
const modules = import.meta.glob<{ default: ProperText }>('../data/propers/common/*.yml', {
|
// text authored (all `propers: null`).
|
||||||
|
const commonModules = import.meta.glob<{ default: ProperText }>('../data/propers/common/*.yml', {
|
||||||
|
eager: true,
|
||||||
|
});
|
||||||
|
const temporalModules = import.meta.glob<{ default: ProperText }>('../data/propers/temporal/*.yml', {
|
||||||
eager: true,
|
eager: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
const commonPropers = new Map<string, ProperText>();
|
function toMap(modules: Record<string, { default: ProperText }>): Map<string, ProperText> {
|
||||||
for (const mod of Object.values(modules)) {
|
const map = new Map<string, ProperText>();
|
||||||
commonPropers.set(mod.default.id, mod.default);
|
for (const mod of Object.values(modules)) {
|
||||||
|
map.set(mod.default.id, mod.default);
|
||||||
|
}
|
||||||
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getCommonProper(id: string): ProperText {
|
const commonPropers = toMap(commonModules);
|
||||||
const proper = commonPropers.get(id);
|
const temporalPropers = toMap(temporalModules);
|
||||||
|
|
||||||
|
function resolve(store: Map<string, ProperText>, id: string): ProperText {
|
||||||
|
const proper = store.get(id);
|
||||||
if (proper) {
|
if (proper) {
|
||||||
return proper;
|
return proper;
|
||||||
}
|
}
|
||||||
@@ -22,4 +32,19 @@ export function getCommonProper(id: string): ProperText {
|
|||||||
return { id, text: {}, status: { la: 'missing', en: 'missing' } };
|
return { id, text: {}, status: { la: 'missing', en: 'missing' } };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getCommonProper(id: string): ProperText {
|
||||||
|
return resolve(commonPropers, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Temporal propers (currently: Sunday collects only — see
|
||||||
|
* data/propers/temporal/*.yml) are keyed Pentecost/offset-based
|
||||||
|
* ("post-pentecost-N-collect"), not Trinity-counted — that's a display
|
||||||
|
* choice that lives in calendar/day-label.ts, not a content-storage
|
||||||
|
* concern. See that file's header for the full id scheme.
|
||||||
|
*/
|
||||||
|
export function getTemporalProper(id: string): ProperText {
|
||||||
|
return resolve(temporalPropers, id);
|
||||||
|
}
|
||||||
|
|
||||||
export type { ProperText } from './types';
|
export type { ProperText } from './types';
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
import { describe, expect, it } from 'vitest';
|
||||||
|
import { resolveCollision } from '../../src/calendar/collision';
|
||||||
|
import type { SanctoralIdentity } from '../../src/calendar/types';
|
||||||
|
|
||||||
|
function saint(id: string, rank: SanctoralIdentity['rank']): SanctoralIdentity {
|
||||||
|
return { id, name: id, rank };
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('resolveCollision', () => {
|
||||||
|
it('higher rank wins regardless of which side is incoming vs native', () => {
|
||||||
|
const incoming = saint('incoming', 'semiduplex');
|
||||||
|
const native = saint('native', 'simplex');
|
||||||
|
const result = resolveCollision(incoming, native);
|
||||||
|
expect(result.winner).toEqual({ kind: 'sanctoral', id: 'incoming', name: 'incoming', rank: 'semiduplex' });
|
||||||
|
expect(result.commemorations).toEqual([{ kind: 'sanctoral', id: 'native', name: 'native', rank: 'simplex' }]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('a transferred Vigil beats a native Simplex (vigil ranks above simplex for collisions)', () => {
|
||||||
|
const result = resolveCollision(saint('vigil-feast', 'vigil'), saint('native', 'simplex'));
|
||||||
|
expect(result.winner.kind).toBe('sanctoral');
|
||||||
|
expect(result.winner.kind === 'sanctoral' ? result.winner.id : undefined).toBe('vigil-feast');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('a native Semiduplex beats a transferred Vigil', () => {
|
||||||
|
const result = resolveCollision(saint('vigil-feast', 'vigil'), saint('native', 'semiduplex'));
|
||||||
|
expect(result.winner.kind === 'sanctoral' ? result.winner.id : undefined).toBe('native');
|
||||||
|
expect(result.commemorations).toEqual([{ kind: 'sanctoral', id: 'vigil-feast', name: 'vigil-feast', rank: 'vigil' }]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('ties favor the native occupant, the incoming feast is commemorated', () => {
|
||||||
|
const result = resolveCollision(saint('incoming', 'duplex'), saint('native', 'duplex'));
|
||||||
|
expect(result.winner.kind === 'sanctoral' ? result.winner.id : undefined).toBe('native');
|
||||||
|
expect(result.commemorations).toEqual([{ kind: 'sanctoral', id: 'incoming', name: 'incoming', rank: 'duplex' }]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('the loser is always commemorated, with no rank threshold', () => {
|
||||||
|
const result = resolveCollision(saint('incoming', 'duplex-1-classis'), saint('native', 'simplex'));
|
||||||
|
expect(result.commemorations).toEqual([{ kind: 'sanctoral', id: 'native', name: 'native', rank: 'simplex' }]);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,9 +1,16 @@
|
|||||||
import { describe, expect, it } from 'vitest';
|
import { describe, expect, it } from 'vitest';
|
||||||
import { decideOccurrence, compareFeastClass, isAtLeast } from '../../src/calendar/commemorations';
|
import { decideOccurrence, compareFeastClass, isAtLeast } from '../../src/calendar/commemorations';
|
||||||
|
import type { SanctoralIdentity } from '../../src/calendar/types';
|
||||||
|
|
||||||
|
function saint(rank: SanctoralIdentity['rank']): SanctoralIdentity {
|
||||||
|
return { id: 'x', name: 'St. Ereden', rank };
|
||||||
|
}
|
||||||
|
|
||||||
describe('compareFeastClass / isAtLeast', () => {
|
describe('compareFeastClass / isAtLeast', () => {
|
||||||
it('orders the six ranks low to high', () => {
|
it('orders the seven ranks low to high, with vigil between simplex and semiduplex', () => {
|
||||||
expect(compareFeastClass('simplex', 'duplex-1-classis')).toBeLessThan(0);
|
expect(compareFeastClass('simplex', 'vigil')).toBeLessThan(0);
|
||||||
|
expect(compareFeastClass('vigil', 'semiduplex')).toBeLessThan(0);
|
||||||
|
expect(compareFeastClass('semiduplex', 'duplex')).toBeLessThan(0);
|
||||||
expect(compareFeastClass('duplex-1-classis', 'simplex')).toBeGreaterThan(0);
|
expect(compareFeastClass('duplex-1-classis', 'simplex')).toBeGreaterThan(0);
|
||||||
expect(compareFeastClass('duplex', 'duplex')).toBe(0);
|
expect(compareFeastClass('duplex', 'duplex')).toBe(0);
|
||||||
});
|
});
|
||||||
@@ -14,56 +21,85 @@ describe('compareFeastClass / isAtLeast', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('decideOccurrence', () => {
|
describe('decideOccurrence — no candidate', () => {
|
||||||
it('temporal wins trivially when nothing is assigned to the date', () => {
|
it('temporal wins trivially when nothing is assigned to the date', () => {
|
||||||
expect(decideOccurrence('ordinary-feria', null)).toEqual({ winner: 'temporal', commemorated: false });
|
expect(decideOccurrence('ordinary-feria', 'some-feria-id', null)).toEqual({
|
||||||
expect(decideOccurrence('privileged-sunday', null)).toEqual({ winner: 'temporal', commemorated: false });
|
winner: { kind: 'temporal', id: 'some-feria-id' },
|
||||||
});
|
commemorations: [],
|
||||||
|
|
||||||
it('an ordinary feria always yields to any real feast, uncommemorated', () => {
|
|
||||||
expect(decideOccurrence('ordinary-feria', 'simplex')).toEqual({ winner: 'sanctoral', commemorated: false });
|
|
||||||
expect(decideOccurrence('ordinary-feria', 'duplex-1-classis')).toEqual({ winner: 'sanctoral', commemorated: false });
|
|
||||||
});
|
|
||||||
|
|
||||||
it('a privileged feria yields to nothing short of the top class', () => {
|
|
||||||
expect(decideOccurrence('privileged-feria', 'duplex-2-classis')).toEqual({
|
|
||||||
winner: 'temporal',
|
|
||||||
commemorated: false,
|
|
||||||
});
|
|
||||||
expect(decideOccurrence('privileged-feria', 'duplex-1-classis')).toEqual({
|
|
||||||
winner: 'temporal',
|
|
||||||
commemorated: true,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('an ordinary Sunday yields outright only to the top class, and is commemorated by the two ranks below it', () => {
|
|
||||||
expect(decideOccurrence('ordinary-sunday', 'duplex-1-classis')).toEqual({
|
|
||||||
winner: 'sanctoral',
|
|
||||||
commemorated: false,
|
|
||||||
});
|
|
||||||
expect(decideOccurrence('ordinary-sunday', 'duplex-2-classis')).toEqual({
|
|
||||||
winner: 'temporal',
|
|
||||||
commemorated: true,
|
|
||||||
});
|
|
||||||
expect(decideOccurrence('ordinary-sunday', 'duplex-majus')).toEqual({
|
|
||||||
winner: 'temporal',
|
|
||||||
commemorated: true,
|
|
||||||
});
|
|
||||||
expect(decideOccurrence('ordinary-sunday', 'duplex')).toEqual({ winner: 'temporal', commemorated: false });
|
|
||||||
});
|
|
||||||
|
|
||||||
it('a privileged Sunday is never displaced, and only the top two ranks are even commemorated', () => {
|
|
||||||
expect(decideOccurrence('privileged-sunday', 'duplex-1-classis')).toEqual({
|
|
||||||
winner: 'temporal',
|
|
||||||
commemorated: true,
|
|
||||||
});
|
|
||||||
expect(decideOccurrence('privileged-sunday', 'duplex-2-classis')).toEqual({
|
|
||||||
winner: 'temporal',
|
|
||||||
commemorated: true,
|
|
||||||
});
|
|
||||||
expect(decideOccurrence('privileged-sunday', 'duplex-majus')).toEqual({
|
|
||||||
winner: 'temporal',
|
|
||||||
commemorated: false,
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('decideOccurrence — ordinary-feria', () => {
|
||||||
|
it('always yields to any real feast, uncommemorated, whatever its rank', () => {
|
||||||
|
for (const rank of ['simplex', 'vigil', 'semiduplex', 'duplex', 'duplex-1-classis'] as const) {
|
||||||
|
const result = decideOccurrence('ordinary-feria', 'id', saint(rank));
|
||||||
|
expect(result.winner).toEqual({ kind: 'sanctoral', id: 'x', name: 'St. Ereden', rank });
|
||||||
|
expect(result.commemorations).toEqual([]);
|
||||||
|
expect(result.transfer).toBeUndefined();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('decideOccurrence — privileged-feria', () => {
|
||||||
|
it('yields to nothing short of the top class', () => {
|
||||||
|
const majus = decideOccurrence('privileged-feria', 'id', saint('duplex-2-classis'));
|
||||||
|
expect(majus.winner).toEqual({ kind: 'temporal', id: 'id' });
|
||||||
|
expect(majus.commemorations).toEqual([]);
|
||||||
|
|
||||||
|
const top = decideOccurrence('privileged-feria', 'id', saint('duplex-1-classis'));
|
||||||
|
expect(top.commemorations).toEqual([{ kind: 'sanctoral', id: 'x', name: 'St. Ereden', rank: 'duplex-1-classis' }]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('decideOccurrence — ordinary-sunday', () => {
|
||||||
|
it('duplex or higher wins outright, and the Sunday itself is commemorated', () => {
|
||||||
|
const result = decideOccurrence('ordinary-sunday', 'post-epiphany-2', saint('duplex'));
|
||||||
|
expect(result.winner).toEqual({ kind: 'sanctoral', id: 'x', name: 'St. Ereden', rank: 'duplex' });
|
||||||
|
expect(result.commemorations).toEqual([{ kind: 'temporal', id: 'post-epiphany-2' }]);
|
||||||
|
expect(result.transfer).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('simplex stays and is commemorated, not transferred', () => {
|
||||||
|
const result = decideOccurrence('ordinary-sunday', 'post-epiphany-2', saint('simplex'));
|
||||||
|
expect(result.winner).toEqual({ kind: 'temporal', id: 'post-epiphany-2' });
|
||||||
|
expect(result.commemorations).toEqual([{ kind: 'sanctoral', id: 'x', name: 'St. Ereden', rank: 'simplex' }]);
|
||||||
|
expect(result.transfer).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('semiduplex gets nothing here — transfers forward', () => {
|
||||||
|
const result = decideOccurrence('ordinary-sunday', 'post-epiphany-2', saint('semiduplex'));
|
||||||
|
expect(result.winner).toEqual({ kind: 'temporal', id: 'post-epiphany-2' });
|
||||||
|
expect(result.commemorations).toEqual([]);
|
||||||
|
expect(result.transfer).toEqual({ candidate: saint('semiduplex'), direction: 'forward' });
|
||||||
|
});
|
||||||
|
|
||||||
|
it('vigil gets nothing here — transfers backward', () => {
|
||||||
|
const result = decideOccurrence('ordinary-sunday', 'post-epiphany-2', saint('vigil'));
|
||||||
|
expect(result.transfer).toEqual({ candidate: saint('vigil'), direction: 'backward' });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('decideOccurrence — privileged-sunday', () => {
|
||||||
|
it('is never displaced; duplex-majus and up are commemorated', () => {
|
||||||
|
for (const rank of ['duplex-majus', 'duplex-2-classis', 'duplex-1-classis'] as const) {
|
||||||
|
const result = decideOccurrence('privileged-sunday', 'advent-1', saint(rank));
|
||||||
|
expect(result.winner).toEqual({ kind: 'temporal', id: 'advent-1' });
|
||||||
|
expect(result.commemorations).toEqual([{ kind: 'sanctoral', id: 'x', name: 'St. Ereden', rank }]);
|
||||||
|
expect(result.transfer).toBeUndefined();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('duplex, semiduplex, and simplex all transfer forward — no bare commemoration here', () => {
|
||||||
|
for (const rank of ['duplex', 'semiduplex', 'simplex'] as const) {
|
||||||
|
const result = decideOccurrence('privileged-sunday', 'advent-1', saint(rank));
|
||||||
|
expect(result.commemorations).toEqual([]);
|
||||||
|
expect(result.transfer).toEqual({ candidate: saint(rank), direction: 'forward' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('vigil transfers backward, same as on an ordinary Sunday', () => {
|
||||||
|
const result = decideOccurrence('privileged-sunday', 'advent-1', saint('vigil'));
|
||||||
|
expect(result.transfer).toEqual({ candidate: saint('vigil'), direction: 'backward' });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
@@ -38,13 +38,14 @@ describe('getDayLabel — feast name combination', () => {
|
|||||||
weekday: 'monday',
|
weekday: 'monday',
|
||||||
season: 'trinitytide',
|
season: 'trinitytide',
|
||||||
temporalCategory: 'ordinary-feria',
|
temporalCategory: 'ordinary-feria',
|
||||||
occurring: [],
|
winner: { kind: 'temporal', id: 'post-pentecost-02' },
|
||||||
|
commemorations: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
it('shows just the feast name when it wins outright', () => {
|
it('shows just the feast name when it wins outright', () => {
|
||||||
const day: LiturgicalDay = {
|
const day: LiturgicalDay = {
|
||||||
...base,
|
...base,
|
||||||
occurring: [{ id: 'x', name: 'St. Ereden', rank: 'duplex', commemorated: false }],
|
winner: { kind: 'sanctoral', id: 'x', name: 'St. Ereden', rank: 'duplex' },
|
||||||
};
|
};
|
||||||
expect(getDayLabel(day)).toBe('St. Ereden');
|
expect(getDayLabel(day)).toBe('St. Ereden');
|
||||||
});
|
});
|
||||||
@@ -52,12 +53,12 @@ describe('getDayLabel — feast name combination', () => {
|
|||||||
it('shows both, feast first, when the feast is merely commemorated', () => {
|
it('shows both, feast first, when the feast is merely commemorated', () => {
|
||||||
const day: LiturgicalDay = {
|
const day: LiturgicalDay = {
|
||||||
...base,
|
...base,
|
||||||
occurring: [{ id: 'x', name: 'St. Ereden', rank: 'duplex-2-classis', commemorated: true }],
|
commemorations: [{ kind: 'sanctoral', id: 'x', name: 'St. Ereden', rank: 'duplex-2-classis' }],
|
||||||
};
|
};
|
||||||
expect(getDayLabel(day)).toBe('St. Ereden — Monday in the 2nd week after Trinity');
|
expect(getDayLabel(day)).toBe('St. Ereden — Monday in the 2nd week after Trinity');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('shows just the temporal label when nothing is occurring at all', () => {
|
it('shows just the temporal label when nothing is commemorated at all', () => {
|
||||||
expect(getDayLabel(base)).toBe('Monday in the 2nd week after Trinity');
|
expect(getDayLabel(base)).toBe('Monday in the 2nd week after Trinity');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
import { describe, expect, it } from 'vitest';
|
||||||
|
import { resolveDay } from '../../src/calendar';
|
||||||
|
|
||||||
|
describe('transfer mechanism (resolveDay integration)', () => {
|
||||||
|
// The Vigil of St. Lawrence (Aug 9) is a real content entry specifically
|
||||||
|
// added to exercise this — Aug 9, 2026 is a Sunday, so the vigil (rank
|
||||||
|
// 'vigil') can't win or be commemorated there (see
|
||||||
|
// commemorations.ts's ordinary-sunday rule) and must transfer backward.
|
||||||
|
it('a vigil impeded by an ordinary Sunday transfers backward to Saturday, leaving the Sunday untouched', () => {
|
||||||
|
const saturday = resolveDay('2026-08-08');
|
||||||
|
const sunday = resolveDay('2026-08-09');
|
||||||
|
const monday = resolveDay('2026-08-10');
|
||||||
|
|
||||||
|
expect(saturday.winner).toEqual({
|
||||||
|
kind: 'sanctoral',
|
||||||
|
id: 'vigil-of-st-lawrence',
|
||||||
|
name: 'Vigil of St. Lawrence',
|
||||||
|
rank: 'vigil',
|
||||||
|
});
|
||||||
|
expect(saturday.commemorations).toEqual([]);
|
||||||
|
|
||||||
|
// The Sunday's own resolution is exactly as if the vigil didn't exist.
|
||||||
|
expect(sunday.winner).toEqual({ kind: 'temporal', id: 'post-pentecost-11' });
|
||||||
|
expect(sunday.commemorations).toEqual([]);
|
||||||
|
|
||||||
|
// St. Lawrence's own day (Monday) is unaffected by the backward transfer.
|
||||||
|
expect(monday.winner).toEqual({
|
||||||
|
kind: 'sanctoral',
|
||||||
|
id: 'st-lawrence',
|
||||||
|
name: 'St. Lawrence, Martyr',
|
||||||
|
rank: 'duplex-2-classis',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -33,8 +33,10 @@ describe('resolveEveningDay', () => {
|
|||||||
// Duplex I classis.
|
// Duplex I classis.
|
||||||
const day = resolveEveningDay('2026-08-14');
|
const day = resolveEveningDay('2026-08-14');
|
||||||
expect(day.date).toBe('2026-08-15');
|
expect(day.date).toBe('2026-08-15');
|
||||||
const winner = day.occurring.find((f) => !f.commemorated);
|
expect(day.winner.kind).toBe('sanctoral');
|
||||||
expect(winner?.id).toBe('assumption');
|
if (day.winner.kind === 'sanctoral') {
|
||||||
expect(winner?.vespersFrom).toBe('firstVespersOfTomorrow');
|
expect(day.winner.id).toBe('assumption');
|
||||||
|
expect(day.winner.vespersFrom).toBe('firstVespersOfTomorrow');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -31,10 +31,11 @@ describe('weekdayOf', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('resolveDay', () => {
|
describe('resolveDay', () => {
|
||||||
it('stubs season and occurring until milestone 4', () => {
|
it('resolves a plain Sunday with no occurring feast', () => {
|
||||||
const day = resolveDay('2026-08-09');
|
const day = resolveDay('2026-08-09');
|
||||||
expect(day.date).toBe('2026-08-09');
|
expect(day.date).toBe('2026-08-09');
|
||||||
expect(day.weekday).toBe('sunday');
|
expect(day.weekday).toBe('sunday');
|
||||||
expect(day.occurring).toEqual([]);
|
expect(day.winner).toEqual({ kind: 'temporal', id: 'post-pentecost-11' });
|
||||||
|
expect(day.commemorations).toEqual([]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user