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
|
(* SPDX-License-Identifier: AGPL-3.0-or-later *)
(** Bible books: one canonical id per book, and the tradition that decides
which book an id denotes.
Ids follow the VULGATE structure ([kings_3], [esdras_2],
[ecclesiasticus]), because the Vulgate is the default tradition and the
shipped 1962 data is Vulgate throughout. An id is internal -- it is never
shown to a reader, exactly as a slug is never shown. *)
type id
val to_string : id -> string
(** Resolve one spelling as it appears in the data. Returns [None] for
anything not in {!tokens}.
SIXTEEN books arrive in more than one spelling, surveyed across all
three citation-bearing files ([lectionary.sexp], [sanctoral.sexp],
[commons.sexp] -- not the lectionary alone, which undercounts: the
sanctoral propers alone carry more citations than the lectionary does).
Most are a dotted/undotted pair ([Isa]/[Isa.], [3 Kgs.]/[3 Kings], and
others); two also carry a MODERN spelling sitting inside otherwise-
Vulgate data ([Sir] alongside [Ecclus]/[Eccli], [Rev] alongside [Apoc]).
All of this is INHERITED from lectio's own ini, which is itself
generated from missalemeum/Divinum Officium -- it is not a colitur
transcription error, and the data is deliberately left untouched. Every
accepted spelling resolves here to the same, single Vulgate id: [Sir]
resolves to [ecclesiasticus] and [Rev] to [apocalypse], never to the
tradition-only targets [sirach]/[revelation] -- see those below. *)
val of_token : string -> id option
(** Every id this build knows, for coverage checks. *)
val all : id list
(** Every accepted spelling paired with its id. *)
val tokens : (string * id) list
(** A numbering tradition: which book an id denotes. Separate from NAMING
(what a book is called), which lives in a language file's [\[bible\]]
section, because naming varies by language and this does not -- "modern
numbering" is the same decision in Latin, Polish and English. *)
type tradition
(** The identity tradition: the Vulgate, as the 1962 Missal prints it. The
default; colitur never silently renumbers. *)
val vulgate : tradition
(** Build a tradition from an ini section's fields. An entry naming an
unknown id on either side is IGNORED, not fatal: a traditions file
written for a newer colitur must still work on an older one. Use
{!unknown_fields} to report them. *)
val tradition_of_fields : (string * string) list -> tradition
(** The fields {!tradition_of_fields} silently dropped -- either side naming
an id outside {!all}. Never raises; a caller that cares can report these,
a caller that does not can ignore the return value entirely. *)
val unknown_fields : (string * string) list -> string list
val map : tradition -> id -> id
|