summaryrefslogtreecommitdiff
path: root/lib/kernel/date_spec.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kernel/date_spec.ml')
-rw-r--r--lib/kernel/date_spec.ml34
1 files changed, 3 insertions, 31 deletions
diff --git a/lib/kernel/date_spec.ml b/lib/kernel/date_spec.ml
index 1d0da00..76e21e3 100644
--- a/lib/kernel/date_spec.ml
+++ b/lib/kernel/date_spec.ml
@@ -1,8 +1,10 @@
+open Sexplib0.Sexp_conv
+
(* How a sanctoral entry expresses its date. Plan 2 ships the only form the EF
sanctoral needs -- a fixed calendar date -- because EF movable feasts come
from the rite's temporal code, not from data. Sunday-relative and
Easter-relative forms arrive with the OF sanctoral. *)
-type t = Fixed of { month : int; day : int }
+type t = Fixed of { month : int; day : int } [@@deriving sexp]
(* Leap-year maximum, so 29 February is constructible; it simply does not
resolve in a common year. *)
@@ -21,33 +23,3 @@ let fixed ~month ~day =
let resolve t ~year =
match t with
| Fixed { month; day } -> Result.to_option (Date.make ~year ~month ~day)
-
-let sexp_of_t = function
- | Fixed { month; day } ->
- Sexplib0.Sexp.List [
- Sexplib0.Sexp_conv.sexp_of_string "Fixed";
- Sexplib0.Sexp.List [
- Sexplib0.Sexp.List [
- Sexplib0.Sexp_conv.sexp_of_string "month";
- Sexplib0.Sexp_conv.sexp_of_int month
- ];
- Sexplib0.Sexp.List [
- Sexplib0.Sexp_conv.sexp_of_string "day";
- Sexplib0.Sexp_conv.sexp_of_int day
- ]
- ]
- ]
-
-let t_of_sexp sexp =
- match sexp with
- | Sexplib0.Sexp.List [
- Sexplib0.Sexp.Atom "Fixed";
- Sexplib0.Sexp.List [
- Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "month"; month_sexp ];
- Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "day"; day_sexp ]
- ]
- ] ->
- let month = Sexplib0.Sexp_conv.int_of_sexp month_sexp in
- let day = Sexplib0.Sexp_conv.int_of_sexp day_sexp in
- Fixed { month; day }
- | _ -> Sexplib0.Sexp_conv.of_sexp_error "Date_spec.t_of_sexp: expected Fixed record format" sexp