Add Lauds' ferial Preces (Tridentine 1906/1910), shown on ferial/vigil days
Deploy / deploy (push) Successful in 53s
Deploy / deploy (push) Successful in 53s
Monastic 1617 has no Preces feriales at Lauds at all -- content sourced from Tridentine 1906/1910 per direct instruction, same track as the Cross suffrage and St. Joseph's suffrage. New lauds-preces-feriales.yml (Kyrie, Pater noster, the full versicle litany, Psalm 129, closing versicles) transcribed from a live query against a clean Advent feria, matching what actually rendered rather than the underlying template's own conditional markup (the Pope/Bishop and benefactors' versicles are both dropped live despite being present in the template; the King/nation versicle pair is kept despite the template's own rubric note suggesting otherwise). New `lauds-preces` part kind (hours/types.ts) picks between this and the existing short Sunday/feast litany (lauds-short-litany.yml, unchanged content) on a ferial-or-vigil day. Deliberately not the shared `isSundayOrFeast` predicate, which treats a Vigil as a "feast" -- here a Vigil needs to land on the ferial side instead, per direct instruction. Also deliberately wider than the real 1906/1910 rubric itself, which restricts the fuller form to Advent/Lent/Ember days specifically -- shown on *every* ferial or vigil day instead, mirroring the identical explicit choice already made for Prime's own ferial Preces. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -90,6 +90,7 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
|
||||
case 'lauds-office':
|
||||
case 'benedictus':
|
||||
case 'suffrages':
|
||||
case 'lauds-preces':
|
||||
case 'day-collects':
|
||||
throw new Error(`Compline's ordo doesn't support a '${part.kind}' part`);
|
||||
}
|
||||
|
||||
@@ -301,6 +301,22 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
|
||||
const id = getMarianAntiphonId(day);
|
||||
return [{ kind: 'preces', text: resolveCommon(id), label: getMarianAntiphonLabel(id) }];
|
||||
}
|
||||
case 'lauds-preces': {
|
||||
// Deliberately not `isSundayOrFeast` -- that treats any sanctoral
|
||||
// winner, Vigils included, as a "feast." Here a Vigil needs to land
|
||||
// on the ferial side instead (per direct instruction), so it's
|
||||
// checked for explicitly: a Vigil-ranked sanctoral winner, or a
|
||||
// bare temporal winner that isn't Sunday and isn't a named
|
||||
// temporal identity like Marian Saturday or Christ the King (which
|
||||
// aren't Sunday or a sanctoral winner either, but still aren't a
|
||||
// bare ferial office -- same reasoning as the Cross suffrage's own
|
||||
// gate just above).
|
||||
const isVigil = day.winner.kind === 'sanctoral' && day.winner.rank === 'vigil';
|
||||
const isBareFeria = day.winner.kind === 'temporal' && !getTemporalFeastRecord(day.winner.id);
|
||||
const isFerialOrVigil = day.weekday !== 'sunday' && (isVigil || isBareFeria);
|
||||
const id = isFerialOrVigil ? 'lauds-preces-feriales' : 'lauds-short-litany';
|
||||
return [{ kind: 'preces', text: resolveCommon(id) }];
|
||||
}
|
||||
// Not used by Lauds.
|
||||
case 'hymn':
|
||||
case 'lesson':
|
||||
|
||||
@@ -58,6 +58,7 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
|
||||
case 'lauds-office':
|
||||
case 'benedictus':
|
||||
case 'suffrages':
|
||||
case 'lauds-preces':
|
||||
case 'day-collects':
|
||||
throw new Error(`None's ordo doesn't support a '${part.kind}' part`);
|
||||
}
|
||||
|
||||
@@ -116,6 +116,7 @@ function resolvePart(part: HourPart, date: string, day: LiturgicalDay): Resolved
|
||||
case 'lauds-office':
|
||||
case 'benedictus':
|
||||
case 'suffrages':
|
||||
case 'lauds-preces':
|
||||
case 'day-collects':
|
||||
throw new Error(`Prime's ordo doesn't support a '${part.kind}' part`);
|
||||
}
|
||||
|
||||
@@ -58,6 +58,7 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
|
||||
case 'lauds-office':
|
||||
case 'benedictus':
|
||||
case 'suffrages':
|
||||
case 'lauds-preces':
|
||||
case 'day-collects':
|
||||
throw new Error(`Sext's ordo doesn't support a '${part.kind}' part`);
|
||||
}
|
||||
|
||||
@@ -58,6 +58,7 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
|
||||
case 'lauds-office':
|
||||
case 'benedictus':
|
||||
case 'suffrages':
|
||||
case 'lauds-preces':
|
||||
case 'day-collects':
|
||||
throw new Error(`Terce's ordo doesn't support a '${part.kind}' part`);
|
||||
}
|
||||
|
||||
@@ -118,6 +118,20 @@ export type HourPart =
|
||||
// feast) — an honest simplification, see hours/lauds.ts for the caveat
|
||||
// on what real practice also suppresses them for that isn't modeled.
|
||||
| { kind: 'suffrages'; omitOnDouble?: true }
|
||||
// Lauds only. The Tridentine 1906/1910 "Preces feriales" litany (Kyrie,
|
||||
// Pater noster, a long chain of versicles, Psalm 129, closing versicles)
|
||||
// -- content Monastic 1617 doesn't have at Lauds at all, sourced from a
|
||||
// different track per direct instruction, same as lauds-suffrage-
|
||||
// joseph.yml. Real 1906/1910 practice restricts this further still
|
||||
// (Advent/Lent/Ember days, or an explicit day's own rubric flag) --
|
||||
// deliberately widened here to *every* ferial or vigil day, mirroring
|
||||
// the same explicit choice already made for Prime's own ferial Preces
|
||||
// (see data/hours/prime.yml's header). Replaces `lauds-short-litany` on
|
||||
// those days rather than stacking with it -- see hours/lauds.ts's
|
||||
// 'lauds-preces' case for the exact ferial-or-vigil predicate, which is
|
||||
// deliberately not the shared `isSundayOrFeast` (a Vigil counts as a
|
||||
// "feast" there; here it needs to count as ferial-like instead).
|
||||
| { kind: 'lauds-preces' }
|
||||
// Lauds/Vespers. The day's own collect *and* one more per commemoration
|
||||
// (calendar/types.ts's LiturgicalDay.commemorations) — see hours/
|
||||
// resolve-common.ts's getDayCollects. Distinct from the singular
|
||||
|
||||
Reference in New Issue
Block a user