(* emit_json.mli *) (** JSON writer. Hand-rolled: the dependency list is frozen (spec section 1), and writing JSON is a page of code where escaping is the only subtlety. Output shape is pinned by schema/day-v1.json, the published contract. *) (** RFC 8259 section 7, including \u-escaping of control characters below 0x20. Returns the value WITH its surrounding quotes. Exposed for testing. *) val escape_string : string -> string val year : Template.value -> string