Source file pp.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
open Forester_core.Code

let rec node ppf = function
  | Text s -> Fmt.string ppf s
  | Verbatim s -> Fmt.pf ppf "\\verb<<|%s<< " s
  | Group (Squares, t) -> Fmt.pf ppf "[%a]" code t
  | Group (Braces, t) -> Fmt.pf ppf "{%a}" code t
  | Group (Parens, t) -> Fmt.pf ppf "(%a)" code t
  | Ident path -> Fmt.pf ppf "\\%a" Forester_core.Trie.pp_path path
  | Subtree (None, t) -> Fmt.pf ppf "\n\\subtree{\n %a\n}" code t
  | Subtree (Some name, t) -> Fmt.pf ppf "\n\\subtree[%s]{\n %a\n}" name code t
  | Xml_ident (None, t) -> Fmt.pf ppf "\\<%s>" t
  | Xml_ident (Some v, t) -> Fmt.pf ppf "\\<%s:%s>" v t
  | Decl_xmlns (s, u) -> Fmt.pf ppf "\\xmlns:%s{%s}" s u
  | Put (path, t) ->
      Fmt.pf ppf "\\put\\%a{%a}" Forester_core.Trie.pp_path path code t
  | Math (Display, t) -> Fmt.pf ppf "##{%a}" code t
  | Math (Inline, t) -> Fmt.pf ppf "#{%a}" code t
  | v -> Fmt.failwith "No printer for %a" pp_node v

and located pp ppf t = pp ppf t.Forester_core.Range.value
and code ppf = Fmt.list ~sep:Fmt.nop (located node) ppf