Compare commits
2 Commits
33c3890ccf
...
851ac90638
| Author | SHA1 | Date | |
|---|---|---|---|
| 851ac90638 | |||
| fc5c9297fa |
@@ -21,13 +21,15 @@ across every hour and content type in this app.
|
|||||||
it from starting:
|
it from starting:
|
||||||
- Easter's own octave — tabled, "a whole different discussion."
|
- Easter's own octave — tabled, "a whole different discussion."
|
||||||
- Prime's ferial Preces (`data/propers/common/prime-preces-feriales.yml`, the older
|
- Prime's ferial Preces (`data/propers/common/prime-preces-feriales.yml`, the older
|
||||||
pre-1911-reform "Eripe me, Domine" text) currently show on *every* ferial day
|
pre-1911-reform "Eripe me, Domine" text) currently show on *every* plain ferial day and
|
||||||
(`hours/prime.yml`'s `by-day-kind` split) — by explicit choice, more generous than the
|
every Vigil day (`hours/prime.yml`'s `by-day-kind` split, `vigilIsFerial: true`) — by
|
||||||
historical rubric, which restricted this text to Advent/Lent/vigils/Ember days only.
|
explicit choice, more generous than the historical rubric, which restricted this text to
|
||||||
Narrowing the gating to match, if ever wanted, is open, not started. Prime's Sunday/feast
|
Advent/Lent/vigils/Ember days only. Narrowing the gating further (e.g. to Advent/Lent/Ember
|
||||||
Preces (`prime-preces-dominicales.yml`) were separately switched from Monastic's own form
|
too) to match, if ever wanted, is open, not started. Prime's Sunday/feast Preces
|
||||||
to the secular Tridentine form (2026-08-25, keeping Benedict in the Confiteor by explicit
|
(`prime-preces-dominicales.yml`) were separately switched from Monastic's own form to the
|
||||||
choice) — see that file's header.
|
secular Tridentine form (2026-08-25, keeping Benedict in the Confiteor by explicit choice)
|
||||||
|
— see that file's header. The capitulum's own by-day-kind split is unaffected by
|
||||||
|
`vigilIsFerial` — a Vigil day still gets the Sunday/feast capitulum, only the Preces moved.
|
||||||
- What "a Gospel reading is its own kind" should mean structurally/in the UI, beyond the
|
- What "a Gospel reading is its own kind" should mean structurally/in the UI, beyond the
|
||||||
`isGospel` flag on a plain Matins `lesson` — open; deferred until there's a UI to
|
`isGospel` flag on a plain Matins `lesson` — open; deferred until there's a UI to
|
||||||
evaluate it against.
|
evaluate it against.
|
||||||
|
|||||||
@@ -30,6 +30,12 @@
|
|||||||
# ferial Preces are said on *every* ferial day, not just Advent/Lent/
|
# ferial Preces are said on *every* ferial day, not just Advent/Lent/
|
||||||
# vigils/Ember days the way later rubrics restricted them.
|
# vigils/Ember days the way later rubrics restricted them.
|
||||||
#
|
#
|
||||||
|
# Preces additionally set `vigilIsFerial: true` — isSundayOrFeastOffice on
|
||||||
|
# its own treats any sanctoral winner, Vigils included, as a "feast," but
|
||||||
|
# by explicit choice a Vigil day gets the ferial Preces instead. The
|
||||||
|
# capitulum doesn't set this flag, so a Vigil still gets the Sunday/feast
|
||||||
|
# capitulum, same as before.
|
||||||
|
#
|
||||||
# Preces deliberately use the *secular* Tridentine form
|
# Preces deliberately use the *secular* Tridentine form
|
||||||
# (propers/common/prime-preces-dominicales.yml), not Monastic Prime's own
|
# (propers/common/prime-preces-dominicales.yml), not Monastic Prime's own
|
||||||
# shorter Dominicales form — chosen because the secular form keeps content
|
# shorter Dominicales form — chosen because the secular form keeps content
|
||||||
@@ -65,6 +71,7 @@ parts:
|
|||||||
- kind: by-day-kind
|
- kind: by-day-kind
|
||||||
resolvedKind: preces
|
resolvedKind: preces
|
||||||
omitOnDouble: true
|
omitOnDouble: true
|
||||||
|
vigilIsFerial: true
|
||||||
sundayOrFeastRef: { source: common, id: prime-preces-dominicales }
|
sundayOrFeastRef: { source: common, id: prime-preces-dominicales }
|
||||||
ferialRef: { source: common, id: prime-preces-feriales }
|
ferialRef: { source: common, id: prime-preces-feriales }
|
||||||
- kind: prayer
|
- kind: prayer
|
||||||
|
|||||||
+5
-2
@@ -97,10 +97,13 @@ 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(resolveOfficeWinner(day))) {
|
const winner = resolveOfficeWinner(day);
|
||||||
|
if (part.omitOnDouble && isDoubleOrHigher(winner)) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
const ref = isSundayOrFeastOffice(day) ? part.sundayOrFeastRef : part.ferialRef;
|
const isVigil = winner.kind === 'sanctoral' && winner.rank === 'vigil';
|
||||||
|
const useFeastForm = isSundayOrFeastOffice(day) && !(part.vigilIsFerial && isVigil);
|
||||||
|
const ref = useFeastForm ? part.sundayOrFeastRef : part.ferialRef;
|
||||||
if (part.resolvedKind === 'preces') {
|
if (part.resolvedKind === 'preces') {
|
||||||
return [{ kind: 'preces', text: resolveCommon(ref.id), label: part.label }];
|
return [{ kind: 'preces', text: resolveCommon(ref.id), label: part.label }];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,6 +61,12 @@ export type HourPart =
|
|||||||
resolvedKind: 'chapter' | 'preces';
|
resolvedKind: 'chapter' | 'preces';
|
||||||
label?: string;
|
label?: string;
|
||||||
omitOnDouble?: true;
|
omitOnDouble?: true;
|
||||||
|
// When true, a Vigil-ranked sanctoral winner takes the ferialRef
|
||||||
|
// instead of the sundayOrFeastRef isSundayOrFeastOffice would
|
||||||
|
// otherwise give it (that function treats any sanctoral winner,
|
||||||
|
// Vigils included, as a "feast"). Prime's Preces use this; its
|
||||||
|
// capitulum doesn't.
|
||||||
|
vigilIsFerial?: true;
|
||||||
sundayOrFeastRef: PropersRef;
|
sundayOrFeastRef: PropersRef;
|
||||||
ferialRef: PropersRef;
|
ferialRef: PropersRef;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,6 +130,25 @@ describe('resolveOrdo("prime", ...)', () => {
|
|||||||
).toContain('Et ego ad te, Dómine, clamávi');
|
).toContain('Et ego ad te, Dómine, clamávi');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('uses the ferial Preces (but the Sunday/feast capitulum) on a Vigil day', () => {
|
||||||
|
// 2025-11-29: a real, unimpeded Vigil of St. Andrew — day.winner is
|
||||||
|
// itself sanctoral/vigil (not merely commemorated), see
|
||||||
|
// data/calendar/saints/vigil-of-st-andrew.yml's own header comment.
|
||||||
|
const VIGIL = '2025-11-29';
|
||||||
|
const ordo = resolveOrdo('prime', VIGIL);
|
||||||
|
const chapter = ordo.parts.find((p) => p.kind === 'chapter');
|
||||||
|
// The capitulum doesn't set vigilIsFerial, so it stays on the
|
||||||
|
// Sunday/feast form even on a Vigil day.
|
||||||
|
expect(chapter && chapter.kind === 'chapter' ? chapter.text.text.en : undefined).toBe(
|
||||||
|
'Now to the king of ages, immortal, invisible, the only God, be honour and glory for ever and ever. Amen.',
|
||||||
|
);
|
||||||
|
const preces = ordo.parts.filter((p) => p.kind === 'preces');
|
||||||
|
const ferialPreces = preces.find((p) => p.kind === 'preces' && p.text.text.la?.startsWith('V. Éripe me'));
|
||||||
|
expect(ferialPreces).toBeDefined();
|
||||||
|
const dominicalPreces = preces.find((p) => p.kind === 'preces' && p.text.text.la?.includes('Confíteor Deo'));
|
||||||
|
expect(dominicalPreces).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
it('gives the capitulum its scripture citation', () => {
|
it('gives the capitulum its scripture citation', () => {
|
||||||
const ordo = resolveOrdo('prime', MONDAY);
|
const ordo = resolveOrdo('prime', MONDAY);
|
||||||
const chapter = ordo.parts.find((p) => p.kind === 'chapter');
|
const chapter = ordo.parts.find((p) => p.kind === 'chapter');
|
||||||
|
|||||||
Reference in New Issue
Block a user