diff options
Diffstat (limited to 'lib/naming')
| -rw-r--r-- | lib/naming/lang.ml | 14 | ||||
| -rw-r--r-- | lib/naming/lang.mli | 7 |
2 files changed, 17 insertions, 4 deletions
diff --git a/lib/naming/lang.ml b/lib/naming/lang.ml index 92c8a9a..2301513 100644 --- a/lib/naming/lang.ml +++ b/lib/naming/lang.ml @@ -10,6 +10,7 @@ type t = { celebration : table; weekday : table; month : table; + month_abbr : table; season : table; rank : table; colour : table; @@ -54,13 +55,17 @@ let month t n = if n < 1 || n > 12 then string_of_int n else match lookup t (fun x -> x.month) (string_of_int n) with Some v -> v | None -> string_of_int n +let month_abbr t n = + if n < 1 || n > 12 then string_of_int n + else match lookup t (fun x -> x.month_abbr) (string_of_int n) with Some v -> v | None -> string_of_int n + let code t = t.code let fallback_code t = t.fallback_code let raw = { code = "raw"; fallback_code = None; celebration = empty_table; weekday = empty_table; - month = empty_table; season = empty_table; rank = empty_table; colour = empty_table; - term = empty_table; rite = empty_table; chain = None } + month = empty_table; month_abbr = empty_table; season = empty_table; rank = empty_table; + colour = empty_table; term = empty_table; rite = empty_table; chain = None } let with_fallback t base = { t with chain = Some base } @@ -96,6 +101,7 @@ let of_string text = celebration = find "celebration"; weekday = find "weekday"; month = find "month"; + month_abbr = find "month_abbr"; season = find "season"; rank = find "rank"; colour = find "colour"; @@ -107,6 +113,6 @@ let keys t = let qualify prefix m = SM.bindings m |> List.map (fun (k, v) -> (prefix ^ "." ^ k, v)) in List.concat [ qualify "celebration" t.celebration; qualify "weekday" t.weekday; - qualify "month" t.month; qualify "season" t.season; qualify "rank" t.rank; - qualify "colour" t.colour; qualify "term" t.term; qualify "rite" t.rite ] + qualify "month" t.month; qualify "month_abbr" t.month_abbr; qualify "season" t.season; + qualify "rank" t.rank; qualify "colour" t.colour; qualify "term" t.term; qualify "rite" t.rite ] |> List.sort compare diff --git a/lib/naming/lang.mli b/lib/naming/lang.mli index 4d7f82f..34a6d5d 100644 --- a/lib/naming/lang.mli +++ b/lib/naming/lang.mli @@ -61,6 +61,13 @@ val weekday : t -> int -> string (** [month t n], 1 = January. Out-of-range [n] returns [string_of_int n]. *) val month : t -> int -> string +(** [month_abbr t n], 1 = January, e.g. ["Ian"]/["Jan"]. Same shape as + {!month}: out-of-range [n] returns [string_of_int n], and a miss falls + back through the chain to [string_of_int n] as well, never to [month]'s + own full name -- an abbreviation is its own vocabulary, not a truncation + of another lookup. *) +val month_abbr : t -> int -> string + (** Every (section-qualified key, value) pair, sorted. Used by [lang --dump] and [lang --check]. Keys are qualified as e.g. ["celebration.ef-epiphany"]. *) val keys : t -> (string * string) list |
