OCaml library for JSONfeed parsing and creation
at v1.1.0 1.1 kB view raw
1(*--------------------------------------------------------------------------- 2 Copyright (c) 2024 Anil Madhavapeddy. All rights reserved. 3 SPDX-License-Identifier: ISC 4 ---------------------------------------------------------------------------*) 5 6module Unknown = struct 7 type t = Jsont.json 8 9 let empty = Jsont.Object ([], Jsont.Meta.none) 10 let is_empty = function Jsont.Object ([], _) -> true | _ -> false 11end 12 13type t = { type_ : string; url : string; unknown : Unknown.t } 14 15let create ~type_ ~url ?(unknown = Unknown.empty) () = { type_; url; unknown } 16let type_ t = t.type_ 17let url t = t.url 18let unknown t = t.unknown 19let equal a b = a.type_ = b.type_ && a.url = b.url 20let pp ppf t = Format.fprintf ppf "%s: %s" t.type_ t.url 21 22let jsont = 23 let kind = "Hub" in 24 let doc = "A hub endpoint" in 25 let create_obj type_ url unknown = create ~type_ ~url ~unknown () in 26 Jsont.Object.map ~kind ~doc create_obj 27 |> Jsont.Object.mem "type" Jsont.string ~enc:type_ 28 |> Jsont.Object.mem "url" Jsont.string ~enc:url 29 |> Jsont.Object.keep_unknown Jsont.json_mems ~enc:unknown 30 |> Jsont.Object.finish