Port seasonal office content to Lauds, closing the same pre-existing gap
Deploy / deploy (push) Successful in 56s
Deploy / deploy (push) Successful in 56s
Lauds had the identical issue Vespers started with: resolveOffice only ever rendered the plain weekday chapter/responsory/hymn/versicle, year-round, with no Advent/Lent/Passiontide/Paschaltide override — same source file (Major Special.txt) as Vespers', just never wired up. Ports the same seasonalOfficeSuffix-based precedence (per-feast/octave override -> season -> weekday default) and the matching seasonal content, transcribed the same way as Vespers' own (Monastic hymn variants applied from the source's substitution notation against each base Roman text). Paschaltide's chapter is byte-identical to Vespers' own — the source aliases "[Pasch Vespera] = @:Pasch Laudes" — so both hours' data files intentionally carry the same text rather than one importing the other's id. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -298,4 +298,25 @@ describe('resolveOrdo("lauds", ...)', () => {
|
||||
expect(last?.kind).toBe('preces');
|
||||
expect(last?.kind === 'preces' ? last.label : undefined).toBe('Salve Regina');
|
||||
});
|
||||
|
||||
it("renders Advent's seasonal chapter/hymn/versicle instead of the plain weekday default", () => {
|
||||
// 2025-12-02 is a Tuesday in Advent (St. Bibiana, Simplex, merely
|
||||
// commemorated — the day's own winner stays temporal either way).
|
||||
const ordo = resolveOrdo('lauds', '2025-12-02');
|
||||
const chapter = ordo.parts.find((p) => p.kind === 'chapter');
|
||||
expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Isa 2:3');
|
||||
const hymn = ordo.parts.find((p) => p.kind === 'hymn');
|
||||
expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Vox clara ecce íntonat');
|
||||
const versicle = ordo.parts.find((p) => p.kind === 'versicle' && p.text.text.la?.includes('Vox clamántis'));
|
||||
expect(versicle).toBeDefined();
|
||||
});
|
||||
|
||||
it("renders Paschaltide's seasonal office, sharing its chapter with Vespers", () => {
|
||||
// 2026-04-20 is in eastertide (Easter 2026-04-05).
|
||||
const ordo = resolveOrdo('lauds', '2026-04-20');
|
||||
const chapter = ordo.parts.find((p) => p.kind === 'chapter');
|
||||
expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Rom 6:9-10');
|
||||
const hymn = ordo.parts.find((p) => p.kind === 'hymn');
|
||||
expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Auróra lucis rútilat');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user