package forester

  1. Overview
  2. Docs
A tool for tending mathematical forests

Install

Dune Dependency

Authors

Maintainers

Sources

5.0.tar.gz
md5=24f4aed96a8b8af33aba13fba66f1b37
sha512=d36b896aca11858bb4a00fc704c16cc27a1f197bdb3e479d6132fd70f70d67d7158096285cb0b6fb00db14417f0f822cc27fe65d82f0971e42378fd8271ce573

doc/src/forester.frontend/Plain_text_client.ml.html

Source file Plain_text_client.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
(*
 * SPDX-FileCopyrightText: 2024 The Forester Project Contributors
 *
 * SPDX-License-Identifier: GPL-3.0-or-later
 *)

open Forester_core
open Forester_compiler

open struct module T = Types end

let rec pp_content ~forest ~router fmt = function
  | T.Content c -> c |> List.iter @@ pp_content_node ~forest ~router fmt

and pp_content_node ~forest ~(router : URI.t -> URI.t) fmt : 'a T.content_node -> unit = function
  | Text txt | CDATA txt -> Format.pp_print_string fmt txt
  | Uri uri -> URI.pp fmt uri
  | Route_of_uri uri -> Format.fprintf fmt "%a" URI.pp (router uri)
  | KaTeX (_, content) -> pp_content ~forest ~router fmt content
  | Xml_elt elt -> pp_content ~forest ~router fmt elt.content
  | Transclude trn -> pp_transclusion ~forest ~router fmt trn
  | Contextual_number addr -> Format.fprintf fmt "[%a]" URI.pp addr
  | Section section -> pp_section ~forest ~router fmt section
  | Link link -> pp_link ~forest ~router fmt link
  | Results_of_datalog_query _ | Artefact _ | Datalog_script _ -> ()

and pp_transclusion ~forest ~(router : URI.t -> URI.t) fmt (transclusion : T.transclusion) =
  match State.get_content_of_transclusion transclusion forest with
  | None -> Format.fprintf fmt "<could not resolve transclusion of %a>" URI.pp transclusion.href
  | Some content -> pp_content ~forest ~router fmt content

and pp_link ~forest ~(router : URI.t -> URI.t) fmt (link : T.content T.link) =
  pp_content ~forest ~router fmt link.content

and pp_section ~forest ~(router : URI.t -> URI.t) fmt (section : T.content T.section) =
  match section.frontmatter.title with
  | None -> Format.fprintf fmt "<omitted content>"
  | Some title -> Format.fprintf fmt "<omitted content: %a>" (pp_content ~forest ~router) title

let string_of_content ~forest ?(router : URI.t -> URI.t = Fun.id) =
  Format.asprintf "%a" (pp_content ~forest ~router)
OCaml

Innovation. Community. Security.