Files
vu/src/hours/lauds-psalmody-overrides.ts
T
will 0404642614
Deploy / deploy (push) Successful in 51s
calendar: add Christ the King, last Sunday of October
A 1925 addition, so nowhere in the Monastic Tridentinum 1617 base this
project otherwise targets -- content sourced from "Monastic Divino
1930" instead, the Monastic-lineage version of the era that actually
carries it. Always wins outright (Duplex I. classis, confirmed live),
commemorating whichever Sunday after Pentecost it displaces -- same
additive-layering shape as applyOctaves/applyMarianSaturday, run last
so nested commemorations (e.g. a Simplex saint already commemorated
under that Sunday) survive underneath it.

Extended the Lauds psalmody-override mechanism (both the psalm groups
and, newly, the chapter/responsory/hymn/versicle bundle) to recognize
named temporal winners as unconditionally override-eligible, not just
duplex-majus+ sanctoral ones -- generalizing what had been a Marian-
Saturday-only special case. Suffrages needed their own explicit check
too: isDoubleOrHigher only ever looks at a sanctoral rank, and a named
temporal winner has no FeastClass to check at all.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 14:13:22 -04:00

33 lines
1.5 KiB
TypeScript

/** Same shape as data/hours/lauds-antiphons.yml's per-weekday entries
* (see hours/lauds.ts) — a whole-block substitute for the plain ferial
* weekday psalmody, keyed by id: either a saint's own id (gated at
* duplex-majus+, see hours/lauds.ts's getPsalmodyOverrideFor) or the
* literal 'marian-saturday' (applies unconditionally whenever it wins).
* Deliberately per-feast, not per-Common — explicit choice, even though
* it means most duplex-majus+ saints across the year don't have one of
* these authored yet and fall back to the plain weekday default until
* they do (same "mechanism first, content incrementally" pattern as
* everywhere else — not a bug, an expected, honest gap). */
export interface LaudsPsalmodyOverride {
id: string;
groups: { psalms: number[]; antiphon: Partial<Record<string, string>> }[];
// `split`: see hours/lauds.ts's PsalmodyBlock — no current override
// needs it, but the shape stays aligned with the plain weekday default.
canticle: { id: string; antiphon: Partial<Record<string, string>>; split?: number };
laudate: { antiphon: Partial<Record<string, string>> };
}
const modules = import.meta.glob<{ default: LaudsPsalmodyOverride }>(
'../data/hours/lauds-psalmody-overrides/*.yml',
{ eager: true },
);
const overrides = new Map<string, LaudsPsalmodyOverride>();
for (const mod of Object.values(modules)) {
overrides.set(mod.default.id, mod.default);
}
export function getLaudsPsalmodyOverride(id: string): LaudsPsalmodyOverride | undefined {
return overrides.get(id);
}