diff options
Diffstat (limited to 'lib/kernel/date_spec.ml')
| -rw-r--r-- | lib/kernel/date_spec.ml | 34 |
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 |
