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:
@@ -251,7 +251,10 @@ real `draft` status went through it.
|
|||||||
- **Vespers** (`src/hours/vespers.ts` is still a stub). First/Second Vespers
|
- **Vespers** (`src/hours/vespers.ts` is still a stub). First/Second Vespers
|
||||||
overlap (`DayWinner.vespersFrom`) already exists as a type but nothing
|
overlap (`DayWinner.vespersFrom`) already exists as a type but nothing
|
||||||
populates it for Vespers itself yet (only Compline uses `resolveEveningDay`
|
populates it for Vespers itself yet (only Compline uses `resolveEveningDay`
|
||||||
so far).
|
so far). Also owes its own ferial Preces once built — real 1906/1910
|
||||||
|
practice has a distinct "Preces feriales Vespera" (see
|
||||||
|
`lauds-preces-feriales.yml`'s header for the Lauds one, which now
|
||||||
|
exists) with mostly-overlapping but not identical content.
|
||||||
- **Matins** (`src/hours/matins.ts` is still a stub) — needs its own
|
- **Matins** (`src/hours/matins.ts` is still a stub) — needs its own
|
||||||
resolution path (reading-candidate pool, nocturn structure), not the
|
resolution path (reading-candidate pool, nocturn structure), not the
|
||||||
static parts-array pattern the other hours use.
|
static parts-array pattern the other hours use.
|
||||||
@@ -285,6 +288,12 @@ real `draft` status went through it.
|
|||||||
replaces the whole suffrage set with a single alleluia-form "Suffragium
|
replaces the whole suffrage set with a single alleluia-form "Suffragium
|
||||||
Paschale" during Eastertide rather than omitting or showing the
|
Paschale" during Eastertide rather than omitting or showing the
|
||||||
ordinary set) — flagged, not built.
|
ordinary set) — flagged, not built.
|
||||||
|
- `lauds-preces` (2026-08): real Tridentine 1906/1910 practice restricts
|
||||||
|
the fuller ferial Preces to Advent/Lent/Ember days plus Vigils, not
|
||||||
|
every ferial day — widened to every ferial-or-vigil day here by
|
||||||
|
explicit choice, mirroring Prime's own identical earlier choice (see
|
||||||
|
`data/hours/prime.yml`'s header). Also doesn't model Paschaltide's own
|
||||||
|
substitution here either, same gap as the suffrages above.
|
||||||
- `data/calendar/temporal-categories.yml`'s season→category reconstruction
|
- `data/calendar/temporal-categories.yml`'s season→category reconstruction
|
||||||
is from general knowledge of the pre-1955 tradition, not independently
|
is from general knowledge of the pre-1955 tradition, not independently
|
||||||
verified against a primary source for every entry (flagged inline where
|
verified against a primary source for every entry (flagged inline where
|
||||||
|
|||||||
@@ -3,18 +3,22 @@
|
|||||||
# resolves, and data/hours/lauds-antiphons.yml / lauds-canticles/*.yml /
|
# resolves, and data/hours/lauds-antiphons.yml / lauds-canticles/*.yml /
|
||||||
# propers/common/lauds-*.yml for the underlying weekday content.
|
# propers/common/lauds-*.yml for the underlying weekday content.
|
||||||
#
|
#
|
||||||
# The suffrages (Holy Cross, BVM, Ss. Peter & Paul, Peace) are gated by
|
# The suffrages (Holy Cross, BVM, Joseph, Ss. Peter & Paul, Peace) are
|
||||||
# omitOnDouble — see hours/types.ts's 'suffrages' doc comment for the
|
# gated by omitOnDouble — see hours/types.ts's 'suffrages' doc comment for
|
||||||
# caveat on what else real practice also suppresses them for that isn't
|
# the fuller list of what else omits them (Advent/Christmastide/
|
||||||
# modeled yet.
|
# Passiontide, any active octave).
|
||||||
|
#
|
||||||
|
# `lauds-preces` picks between the short Sunday/feast litany
|
||||||
|
# (lauds-short-litany, Benedict's own Kyrie+Pater lead-in) and the fuller
|
||||||
|
# Tridentine 1906/1910 ferial Preces on a ferial or vigil day — see
|
||||||
|
# hours/types.ts's 'lauds-preces' doc comment.
|
||||||
id: lauds
|
id: lauds
|
||||||
parts:
|
parts:
|
||||||
- kind: opening-versicle
|
- kind: opening-versicle
|
||||||
- kind: lauds-psalmody
|
- kind: lauds-psalmody
|
||||||
- kind: lauds-office
|
- kind: lauds-office
|
||||||
- kind: benedictus
|
- kind: benedictus
|
||||||
- kind: preces
|
- kind: lauds-preces
|
||||||
textRef: { source: common, id: lauds-short-litany }
|
|
||||||
- kind: day-collects
|
- kind: day-collects
|
||||||
- kind: suffrages
|
- kind: suffrages
|
||||||
omitOnDouble: true
|
omitOnDouble: true
|
||||||
|
|||||||
@@ -0,0 +1,126 @@
|
|||||||
|
# Verified against Divinum Officium ("Tridentine - 1906", i.e. `version=
|
||||||
|
# Tridentine 1910`), Lauds live query, clean Advent feria 2026-12-17.
|
||||||
|
# Monastic 1617 has no ferial Preces at Lauds at all -- sourced from this
|
||||||
|
# different track per direct instruction, same as lauds-suffrage-
|
||||||
|
# joseph.yml. Replaces `lauds-short-litany` (the short Sunday/feast form)
|
||||||
|
# on a ferial or vigil day -- see hours/types.ts's 'lauds-preces' doc
|
||||||
|
# comment for the exact day-kind predicate and how it differs from the
|
||||||
|
# real 1906/1910 rubric (which restricts this further, to Advent/Lent/
|
||||||
|
# Ember days specifically) by direct, explicit choice.
|
||||||
|
#
|
||||||
|
# The Pope/Bishop versicle pair and the benefactors' versicle, both
|
||||||
|
# present in the underlying template (Psalterium/Special/Preces.txt), are
|
||||||
|
# both actually omitted in the live Tridentine 1910 render for this date
|
||||||
|
# -- transcribed as rendered, not reconstructed from the template's own
|
||||||
|
# conditional markup. The King/nation versicle pair, by contrast, *is*
|
||||||
|
# rendered live despite the template's own rubric note suggesting
|
||||||
|
# otherwise -- same live-over-template discipline.
|
||||||
|
id: lauds-preces-feriales
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
Kýrie, eléison. Christe, eléison. Kýrie, eléison.
|
||||||
|
Pater noster, qui es in cælis, sanctificétur nomen tuum: advéniat regnum tuum: fiat volúntas tua, sicut in cælo et in terra. Panem nostrum quotidiánum da nobis hódie: et dimítte nobis débita nostra, sicut et nos dimíttimus debitóribus nostris:
|
||||||
|
V. Et ne nos indúcas in tentatiónem:
|
||||||
|
R. Sed líbera nos a malo.
|
||||||
|
V. Ego dixi: Dómine, miserére mei.
|
||||||
|
R. Sana ánimam meam quia peccávi tibi.
|
||||||
|
V. Convértere, Dómine, úsquequo?
|
||||||
|
R. Et deprecábilis esto super servos tuos.
|
||||||
|
V. Fiat misericórdia tua, Dómine, super nos.
|
||||||
|
R. Quemádmodum sperávimus in te.
|
||||||
|
V. Sacerdótes tui induántur justítiam.
|
||||||
|
R. Et sancti tui exsúltent.
|
||||||
|
V. Dómine, salvum fac regem.
|
||||||
|
R. Et exáudi nos in die, qua invocavérimus te.
|
||||||
|
V. Salvum fac pópulum tuum, Dómine, et bénedic hereditáti tuæ.
|
||||||
|
R. Et rege eos, et extólle illos usque in ætérnum.
|
||||||
|
V. Meménto Congregatiónis tuæ.
|
||||||
|
R. Quam possedísti ab inítio.
|
||||||
|
V. Fiat pax in virtúte tua.
|
||||||
|
R. Et abundántia in túrribus tuis.
|
||||||
|
V. Orémus pro fidélibus defúnctis.
|
||||||
|
R. Réquiem ætérnam dona eis, Dómine, et lux perpétua lúceat eis.
|
||||||
|
V. Requiéscant in pace.
|
||||||
|
R. Amen.
|
||||||
|
V. Pro frátribus nostris abséntibus.
|
||||||
|
R. Salvos fac servos tuos, Deus meus, sperántes in te.
|
||||||
|
V. Pro afflíctis et captívis.
|
||||||
|
R. Líbera eos, Deus Israël, ex ómnibus tribulatiónibus suis.
|
||||||
|
V. Mitte eis, Dómine, auxílium de sancto.
|
||||||
|
R. Et de Sion tuére eos.
|
||||||
|
V. Dómine, exáudi oratiónem meam.
|
||||||
|
R. Et clamor meus ad te véniat.
|
||||||
|
|
||||||
|
Psalmus 129.
|
||||||
|
De profúndis clamávi ad te, Dómine: Dómine, exáudi vocem meam.
|
||||||
|
Fiant aures tuæ intendéntes, in vocem deprecatiónis meæ.
|
||||||
|
Si iniquitátes observáveris, Dómine: Dómine, quis sustinébit?
|
||||||
|
Quia apud te propitiátio est: et propter legem tuam sustínui te, Dómine.
|
||||||
|
Sustínuit ánima mea in verbo ejus: sperávit ánima mea in Dómino.
|
||||||
|
A custódia matutína usque ad noctem: speret Israël in Dómino.
|
||||||
|
Quia apud Dóminum misericórdia: et copiósa apud eum redémptio.
|
||||||
|
Et ipse rédimet Israël, ex ómnibus iniquitátibus ejus.
|
||||||
|
V. Glória Patri, et Fílio, et Spirítui Sancto.
|
||||||
|
R. Sicut erat in princípio, et nunc, et semper, et in sǽcula sæculórum. Amen.
|
||||||
|
|
||||||
|
V. Dómine, Deus virtútum, convérte nos.
|
||||||
|
R. Et osténde fáciem tuam, et salvi érimus.
|
||||||
|
V. Exsúrge, Christe, ádjuva nos.
|
||||||
|
R. Et líbera nos propter nomen tuum.
|
||||||
|
V. Dómine, exáudi oratiónem meam.
|
||||||
|
R. Et clamor meus ad te véniat.
|
||||||
|
en: |
|
||||||
|
Lord have mercy upon us, Christ have mercy upon us, Lord have mercy upon us.
|
||||||
|
Our Father, who art in heaven, Hallowed be thy name. Thy kingdom come. Thy will be done on earth as it is in heaven. Give us this day our daily bread. And forgive us our trespasses, as we forgive those who trespass against us.
|
||||||
|
V. And lead us not into temptation:
|
||||||
|
R. But deliver us from evil.
|
||||||
|
V. I said: Lord, be merciful unto me:
|
||||||
|
R. Heal my soul, for I have sinned against thee.
|
||||||
|
V. Turn thee again, O Lord; how long will it be?
|
||||||
|
R. And be gracious unto thy servants.
|
||||||
|
V. Let thy mercy, O Lord, be upon us.
|
||||||
|
R. As we have hoped in thee.
|
||||||
|
V. Let thy priests be clothed with justice:
|
||||||
|
R. And may thy saints rejoice.
|
||||||
|
V. O Lord, save our leaders.
|
||||||
|
R. And mercifully hear us when we call upon thee.
|
||||||
|
V. O Lord, save thy people, and bless thine inheritance:
|
||||||
|
R. Govern them and lift them up for ever.
|
||||||
|
V. Remember thy congregation,
|
||||||
|
R. Which thou hast possessed from the beginning.
|
||||||
|
V. Let peace be in thy strength:
|
||||||
|
R. And abundance in thy towers.
|
||||||
|
V. Let us pray for the faithful departed.
|
||||||
|
R. Eternal rest grant unto them, O Lord, and let perpetual light shine upon them.
|
||||||
|
V. May they rest in peace.
|
||||||
|
R. Amen.
|
||||||
|
V. Let us pray for our absent brothers.
|
||||||
|
R. Save thy servants, O God, who put their trust in thee.
|
||||||
|
V. Let us pray for the afflicted and imprisoned.
|
||||||
|
R. Deliver them, God of Israel, from all their tribulations.
|
||||||
|
V. O Lord, send them help from thy sanctuary.
|
||||||
|
R. And defend them out of Sion.
|
||||||
|
V. O Lord, hear my prayer.
|
||||||
|
R. And let my cry come unto thee.
|
||||||
|
|
||||||
|
Psalm 129.
|
||||||
|
Out of the depths I have cried to thee, O Lord: Lord, hear my voice.
|
||||||
|
Let thy ears be attentive to the voice of my supplication.
|
||||||
|
If thou, O Lord, wilt mark iniquities: Lord, who shall stand it.
|
||||||
|
For with thee there is merciful forgiveness: and by reason of thy law, I have waited for thee, O Lord.
|
||||||
|
My soul hath relied on his word: my soul hath hoped in the Lord.
|
||||||
|
From the morning watch even until night, let Israel hope in the Lord.
|
||||||
|
Because with the Lord there is mercy: and with him plentiful redemption.
|
||||||
|
And he shall redeem Israel from all his iniquities.
|
||||||
|
V. Glory be to the Father, and to the Son, and to the Holy Ghost.
|
||||||
|
R. As it was in the beginning, is now, and ever shall be, world without end. Amen.
|
||||||
|
|
||||||
|
V. Turn us again, O Lord, God of Hosts.
|
||||||
|
R. Show us thy face, and we shall be whole.
|
||||||
|
V. Arise, O Christ, and help us.
|
||||||
|
R. And redeem us for thy name's sake.
|
||||||
|
V. O Lord, hear my prayer.
|
||||||
|
R. And let my cry come unto thee.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -5,6 +5,10 @@
|
|||||||
# hours/resolve-common.ts's getDayCollects for the collect(s) themselves,
|
# hours/resolve-common.ts's getDayCollects for the collect(s) themselves,
|
||||||
# not stored here). Distinct from the second, fully silent Pater Noster
|
# not stored here). Distinct from the second, fully silent Pater Noster
|
||||||
# near the very end of Lauds — see lauds-closing-versicle.yml.
|
# near the very end of Lauds — see lauds-closing-versicle.yml.
|
||||||
|
#
|
||||||
|
# Used on Sundays and feasts specifically — see hours/lauds.ts's
|
||||||
|
# 'lauds-preces' case, which swaps in the fuller lauds-preces-feriales.yml
|
||||||
|
# instead on a ferial or vigil day.
|
||||||
id: lauds-short-litany
|
id: lauds-short-litany
|
||||||
text:
|
text:
|
||||||
la: |
|
la: |
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
|
|||||||
case 'lauds-office':
|
case 'lauds-office':
|
||||||
case 'benedictus':
|
case 'benedictus':
|
||||||
case 'suffrages':
|
case 'suffrages':
|
||||||
|
case 'lauds-preces':
|
||||||
case 'day-collects':
|
case 'day-collects':
|
||||||
throw new Error(`Compline's ordo doesn't support a '${part.kind}' part`);
|
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);
|
const id = getMarianAntiphonId(day);
|
||||||
return [{ kind: 'preces', text: resolveCommon(id), label: getMarianAntiphonLabel(id) }];
|
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.
|
// Not used by Lauds.
|
||||||
case 'hymn':
|
case 'hymn':
|
||||||
case 'lesson':
|
case 'lesson':
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
|
|||||||
case 'lauds-office':
|
case 'lauds-office':
|
||||||
case 'benedictus':
|
case 'benedictus':
|
||||||
case 'suffrages':
|
case 'suffrages':
|
||||||
|
case 'lauds-preces':
|
||||||
case 'day-collects':
|
case 'day-collects':
|
||||||
throw new Error(`None's ordo doesn't support a '${part.kind}' part`);
|
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 'lauds-office':
|
||||||
case 'benedictus':
|
case 'benedictus':
|
||||||
case 'suffrages':
|
case 'suffrages':
|
||||||
|
case 'lauds-preces':
|
||||||
case 'day-collects':
|
case 'day-collects':
|
||||||
throw new Error(`Prime's ordo doesn't support a '${part.kind}' part`);
|
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 'lauds-office':
|
||||||
case 'benedictus':
|
case 'benedictus':
|
||||||
case 'suffrages':
|
case 'suffrages':
|
||||||
|
case 'lauds-preces':
|
||||||
case 'day-collects':
|
case 'day-collects':
|
||||||
throw new Error(`Sext's ordo doesn't support a '${part.kind}' part`);
|
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 'lauds-office':
|
||||||
case 'benedictus':
|
case 'benedictus':
|
||||||
case 'suffrages':
|
case 'suffrages':
|
||||||
|
case 'lauds-preces':
|
||||||
case 'day-collects':
|
case 'day-collects':
|
||||||
throw new Error(`Terce's ordo doesn't support a '${part.kind}' part`);
|
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
|
// feast) — an honest simplification, see hours/lauds.ts for the caveat
|
||||||
// on what real practice also suppresses them for that isn't modeled.
|
// on what real practice also suppresses them for that isn't modeled.
|
||||||
| { kind: 'suffrages'; omitOnDouble?: true }
|
| { 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
|
// Lauds/Vespers. The day's own collect *and* one more per commemoration
|
||||||
// (calendar/types.ts's LiturgicalDay.commemorations) — see hours/
|
// (calendar/types.ts's LiturgicalDay.commemorations) — see hours/
|
||||||
// resolve-common.ts's getDayCollects. Distinct from the singular
|
// resolve-common.ts's getDayCollects. Distinct from the singular
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ describe('resolveOrdo("lauds", ...)', () => {
|
|||||||
expect(canticle?.kind === 'canticle' ? canticle.antiphon?.text.la : undefined).toContain('In cratícula');
|
expect(canticle?.kind === 'canticle' ? canticle.antiphon?.text.la : undefined).toContain('In cratícula');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('includes the short litany (Kyrie + Our Father) right after the Benedictus, before the day collect', () => {
|
it('includes the Kyrie + Our Father lead-in right after the Benedictus, before the day collect (either form)', () => {
|
||||||
const ordo = resolveOrdo('lauds', FERIAL_TUESDAY);
|
const ordo = resolveOrdo('lauds', FERIAL_TUESDAY);
|
||||||
const litanyIndex = ordo.parts.findIndex((p) => p.kind === 'preces' && p.text.text.la?.includes('Kýrie, eléison'));
|
const litanyIndex = ordo.parts.findIndex((p) => p.kind === 'preces' && p.text.text.la?.includes('Kýrie, eléison'));
|
||||||
const benedictusIndex = ordo.parts.findIndex((p) => p.kind === 'canticle' && p.canticleId === 'benedictus');
|
const benedictusIndex = ordo.parts.findIndex((p) => p.kind === 'canticle' && p.canticleId === 'benedictus');
|
||||||
@@ -162,6 +162,29 @@ describe('resolveOrdo("lauds", ...)', () => {
|
|||||||
expect(collectIndex).toBeGreaterThan(litanyIndex);
|
expect(collectIndex).toBeGreaterThan(litanyIndex);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('uses the fuller Tridentine 1906/1910 ferial Preces (with Psalm 129) on a plain ferial day, not the short Sunday/feast litany', () => {
|
||||||
|
const ordo = resolveOrdo('lauds', FERIAL_TUESDAY);
|
||||||
|
const preces = ordo.parts.find((p) => p.kind === 'preces' && p.text.text.la?.includes('Kýrie, eléison'));
|
||||||
|
expect(preces?.kind === 'preces' ? preces.text.text.la : undefined).toContain('De profúndis clamávi');
|
||||||
|
expect(preces?.kind === 'preces' ? preces.text.text.en : undefined).toContain('Out of the depths');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('uses the short Sunday/feast litany, without Psalm 129, on a Sunday and on a real saint\'s own winning day', () => {
|
||||||
|
const sunday = resolveOrdo('lauds', '2026-06-28'); // plain temporal Sunday
|
||||||
|
const sundayPreces = sunday.parts.find((p) => p.kind === 'preces' && p.text.text.la?.includes('Kýrie, eléison'));
|
||||||
|
expect(sundayPreces?.kind === 'preces' ? sundayPreces.text.text.la : undefined).not.toContain('Psalmus 129');
|
||||||
|
|
||||||
|
const saintsDay = resolveOrdo('lauds', '2026-08-10'); // St. Lawrence, Duplex II. classis
|
||||||
|
const saintsDayPreces = saintsDay.parts.find((p) => p.kind === 'preces' && p.text.text.la?.includes('Kýrie, eléison'));
|
||||||
|
expect(saintsDayPreces?.kind === 'preces' ? saintsDayPreces.text.text.la : undefined).not.toContain('Psalmus 129');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('still uses the fuller ferial Preces on a Vigil, even though a Vigil is a sanctoral winner (unlike isSundayOrFeast elsewhere)', () => {
|
||||||
|
const ordo = resolveOrdo('lauds', '2028-08-09'); // Vigil of St. Lawrence wins outright this year (not a Sunday)
|
||||||
|
const preces = ordo.parts.find((p) => p.kind === 'preces' && p.text.text.la?.includes('Kýrie, eléison'));
|
||||||
|
expect(preces?.kind === 'preces' ? preces.text.text.la : undefined).toContain('Psalmus 129');
|
||||||
|
});
|
||||||
|
|
||||||
it('resolves just the winners own collect on a plain day with nothing commemorated', () => {
|
it('resolves just the winners own collect on a plain day with nothing commemorated', () => {
|
||||||
const ordo = resolveOrdo('lauds', FERIAL_TUESDAY);
|
const ordo = resolveOrdo('lauds', FERIAL_TUESDAY);
|
||||||
const collects = ordo.parts.filter((p) => p.kind === 'prayer');
|
const collects = ordo.parts.filter((p) => p.kind === 'prayer');
|
||||||
|
|||||||
Reference in New Issue
Block a user