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:
+12
-5
@@ -17,6 +17,7 @@ import {
|
||||
resolveOfficeWinner,
|
||||
ALWAYS_OVERRIDE_TEMPORAL_IDS,
|
||||
verifiedText,
|
||||
seasonalOfficeSuffix,
|
||||
} from './resolve-common';
|
||||
import laudsDefinitionData from '../data/hours/lauds.yml';
|
||||
import laudsAntiphonsData from '../data/hours/lauds-antiphons.yml';
|
||||
@@ -187,7 +188,11 @@ function resolvePsalmody(day: LiturgicalDay): ResolvedPart[] {
|
||||
* getPsalmodyOverrideFor) and leave this bundle at its plain weekday
|
||||
* default, which is exactly what falls back here when the id-keyed
|
||||
* capitulum doesn't exist (same dual-missing-status "not authored"
|
||||
* signal used throughout this codebase, not a special case). */
|
||||
* signal used throughout this codebase, not a special case). Falls to a
|
||||
* *seasonal* default next (Advent/Lent/Passiontide/Paschaltide — see
|
||||
* resolve-common.ts's seasonalOfficeSuffix), and only then the plain
|
||||
* weekday default — a feast's own override always wins over the season
|
||||
* it happens to fall in, same as everywhere else in this codebase. */
|
||||
function resolveOffice(day: LiturgicalDay): ResolvedPart[] {
|
||||
const overrideId = getPsalmodyOverrideFor(day)?.id;
|
||||
if (overrideId) {
|
||||
@@ -201,11 +206,13 @@ function resolveOffice(day: LiturgicalDay): ResolvedPart[] {
|
||||
];
|
||||
}
|
||||
}
|
||||
const seasonSuffix = seasonalOfficeSuffix(day.season);
|
||||
const key = seasonSuffix ?? day.weekday;
|
||||
return [
|
||||
{ kind: 'chapter', text: resolveCommon(capitulumId(day.weekday)) },
|
||||
{ kind: 'responsory', text: resolveCommon(`lauds-responsory-${day.weekday}`) },
|
||||
{ kind: 'hymn', text: resolveCommon(`lauds-hymn-${day.weekday}`) },
|
||||
{ kind: 'versicle', text: resolveCommon(`lauds-versicle-${day.weekday}`) },
|
||||
{ kind: 'chapter', text: resolveCommon(seasonSuffix ? `lauds-capitulum-${key}` : capitulumId(day.weekday)) },
|
||||
{ kind: 'responsory', text: resolveCommon(`lauds-responsory-${key}`) },
|
||||
{ kind: 'hymn', text: resolveCommon(`lauds-hymn-${key}`) },
|
||||
{ kind: 'versicle', text: resolveCommon(`lauds-versicle-${key}`) },
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user