module D = Colitur_kernel.Date module C = Colitur_kernel.Computus let fmt d = Printf.sprintf "%04d-%02d-%02d" (D.year d) (D.month d) (D.day d) let easter_report y = [ ("easter", C.gregorian_easter y); ("ash-wednesday", C.ash_wednesday y); ("palm-sunday", C.palm_sunday y); ("ascension", C.ascension y); ("pentecost", C.pentecost y); ("corpus-christi", C.corpus_christi y) ] |> List.iter (fun (name, d) -> Printf.printf "%s %s\n" name (fmt d)) let usage () = prerr_endline "colitur: usage: colitur easter "; exit 2 let () = match Sys.argv with | [| _; "easter"; ys |] -> ( match int_of_string_opt ys with | Some y when y >= 1583 && y <= 9999 -> easter_report y | Some y -> Printf.eprintf "colitur: year %d out of range 1583..9999\n" y; exit 2 | None -> usage ()) | _ -> usage ()