summaryrefslogtreecommitdiff
path: root/lib/naming
diff options
context:
space:
mode:
Diffstat (limited to 'lib/naming')
-rw-r--r--lib/naming/lang.ml14
-rw-r--r--lib/naming/lang.mli7
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