aboutsummaryrefslogtreecommitdiff
path: root/lib/rites/rite_ef/rubrics_ef.mli
blob: befbf72e25aa4d823309e87bd43ef332f86ed44f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
(** RG 475-476 (docs/research/LT.txt, grep "dicitur symbolum") -- whether the
    Creed is said at Mass. The first rubric in this phase governing a PART OF
    MASS rather than occurrence/precedence, hence its own module: see the
    .ml's own header for the rubric quoted in full and every branch's
    citation. *)

open Colitur_kernel

(** RG 475(e)'s "festis nataliciis Apostolorum et Evangelistarum, necnon in
    festis Cathedrae S. Petri et S. Barnabae Ap." -- see the .ml's own
    citation for how each entry was derived from and verified against
    data/ef/sanctoral.sexp, and for what was deliberately excluded. Exposed
    so the test suite can assert completeness against the shipped data the
    same way {!Precedence_ef.vigil_feast_table} already lets it. *)
val creed_apostle_slugs : string list

(** Whether the Creed is said, post-Gospel/homily, at the Mass this day
    resolves to.

    [temporal] is read for exactly one fact -- RG 475(a)'s own "in qualibet
    dominica, ETSI EIUS OFFICIUM ALICUI FESTO LOCUM CEDAT" ("on any Sunday,
    EVEN WHEN a feast displaces its own Office"): a Sunday impeded by a
    Feast of the Lord (RG 16(a)) still says the Creed, so this reads the
    TEMPORAL cycle's own weekday, never [observed]'s. Every other clause
    reads [observed] -- the celebration whose Mass is actually said -- and
    [date], read once against the rite's own (Gregorian) Easter for the two
    Easter-relative window questions (RG 475(d)'s three octaves, RG 23's
    Ash-Wednesday-and-Holy-Week feriae). [creed] never reads
    {!Liturgical_day.t.commemorations}: RG 476(e), "ratione alicuius
    commemorationis in Missa occurrentis" [never say the Creed merely
    because of a commemoration], holds by construction rather than by a
    checked branch. RG 476(f) ("in Missis defunctorum") reads
    [observed]'s [colour]: see the .ml's own header for why [Colour.Black]
    is a sound proxy for "this Mass is a Requiem" on the shipped data, and
    what would have to be re-checked if that ever stops being true. *)
val creed :
  temporal:(Vocab_ef.season, Vocab_ef.rank) Temporal.t ->
  observed:Vocab_ef.rank Celebration.t ->
  date:Date.t ->
  bool

(** Whether the Te Deum was said at Matins (Breviary 1961 Codex Rubricarum
    nn. 237-238) -- NOT the Divine Office arriving in scope, but a single
    Breviary fact {!gloria}'s own RG 431(a) defers a Mass question to. See
    the .ml's own header for the rubric quoted in full, every branch's own
    citation, and this source's own stated weakness (a single, not yet
    scan-verified, web transcription -- docs/research/breviary/PROVENANCE.md).
    Same three parameters as {!creed}, for the same reasons: [temporal] for
    the day's own weekday/season, [observed] for the celebration whose
    Office is actually kept, [date] for the Easter-relative window
    questions. *)
val te_deum :
  temporal:(Vocab_ef.season, Vocab_ef.rank) Temporal.t ->
  observed:Vocab_ef.rank Celebration.t ->
  date:Date.t ->
  bool

(** Whether the Gloria in excelsis is said at this day's Mass (RG 431-432).
    431(a)/432(a) defer to {!te_deum}; 431(c) (Holy Thursday, the Easter
    Vigil Mass) and 432(b)/(d) (violet vestments; a Requiem) are
    independent overrides, checked ahead of the Te Deum-derived answer --
    see the .ml's own header for the full account, including which of
    431/432's own clauses this engine has no votive-Mass-class dimension to
    implement and are therefore marked not-applicable rather than silently
    skipped. *)
val gloria :
  temporal:(Vocab_ef.season, Vocab_ef.rank) Temporal.t ->
  observed:Vocab_ef.rank Celebration.t ->
  date:Date.t ->
  bool

(** RG 487(a)'s own two fixed-feast triggers for the Holy Cross preference
    (the Exaltation of the Holy Cross, the Most Precious Blood) -- see the
    .ml's own citation for what RG 487(a)'s further-named categories (the
    Passion/Instruments of the Passion, the Most Holy Redeemer) are absent
    from the shipped calendar entirely, not merely from this list. *)
val preface_holy_cross_slugs : string list

(** RG 496's own two St Joseph feasts in the shipped calendar. *)
val preface_st_joseph_slugs : string list

(** RG 497's own [Apostolorum et Evangelistarum] population -- WIDER than
    {!creed_apostle_slugs} (no natalicium restriction); see the .ml's own
    citation for the FIUV Ordo evidence and what was deliberately left
    off, unwitnessed. *)
val preface_apostle_slugs : string list

(** RG 495's own [beatae Mariae Virginis] population -- WIDER than
    {!Precedence_ef.marian_slugs} (a different, looser standard than that
    list's own RG 112(d) oration-level one); see the .ml's own citation
    for the FIUV Ordo evidence. *)
val preface_bvm_slugs : string list

(** Which preface is said at this day's Mass (RG 482-499). [None] both when
    this engine resolves a day with no Mass at all (Good Friday) and -- for
    a rite that has not implemented this function at all -- as the type's
    own neutral value; see the .ml's own header for the rubric quoted in
    full, the priority order every branch follows and why, and the FIUV
    Ordo evidence that order rests on. Same three parameters as {!creed}/
    {!te_deum}/{!gloria}, for the same reasons. *)
val preface :
  temporal:(Vocab_ef.season, Vocab_ef.rank) Temporal.t ->
  observed:Vocab_ef.rank Celebration.t ->
  date:Date.t ->
  Preface.t option