diff --git a/lib/dune b/lib/dune index 9306f91..46c8902 100644 --- a/lib/dune +++ b/lib/dune @@ -1,7 +1,7 @@ (library (name pgn_logic) (public_name pgn_to_tex) - (libraries sedlex menhirLib) + (libraries sedlex menhirLib yojson) (modules ast parser lexer parsing latex latex_helpers pgn2tex nag) (preprocess (pps sedlex.ppx))) diff --git a/lib/pgn2tex.ml b/lib/pgn2tex.ml index 24dc4bc..0753f37 100644 --- a/lib/pgn2tex.ml +++ b/lib/pgn2tex.ml @@ -1,4 +1,17 @@ module MoveMap = Ast.MoveMap +open Yojson.Safe.Util + +let parse_diagrams_json diagrams_json_str = + try + let json = Yojson.Safe.from_string diagrams_json_str in + let diagrams_list = to_list json in + List.fold_left + (fun acc_map item -> + let ply = item |> member "ply" |> to_int in + let fen = item |> member "fen" |> to_string in + MoveMap.add ply fen acc_map) + MoveMap.empty diagrams_list + with _ -> MoveMap.empty let to_tex pgn ~diagram_data ~clock = let game = Parsing.parse_pgn pgn in