package mdx
Executable code blocks inside markdown files
Install
Dune Dependency
Authors
Maintainers
Sources
mdx-2.2.1.tbz
sha256=f09ed733fe4461605f029773748a6353d01b95be65eb986bcce17d6ddaf509d8
sha512=5f918fbafcb55c3959f6cce69b8d8e640883dea5c21d159b5ebb6ead31230569100813555d2637f74028d51f79f23a226dc69811524d9cf1c2ca50b87a93dbf2
doc/src/mdx/document.ml.html
Source file document.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 42 43 44 45 46 47 48 49 50
(* * Copyright (c) 2018 Thomas Gazagnaire <thomas@gazagnaire.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *) type section = int * string type line = Section of section | Text of string | Block of Block.t type t = line list let pp_section ppf (level, text) = Fmt.pf ppf "%s %s" (String.make level '#') text let dump_line ppf = function | Block block -> Fmt.pf ppf "Block %a" Block.dump block | Section section -> Fmt.pf ppf "Section %a" pp_section section | Text text -> Fmt.pf ppf "Text %S" text let pp_line ?syntax ppf = function | Block block -> Block.pp ?syntax ppf block | Section section -> Fmt.pf ppf "%a\n" pp_section section | Text s -> Fmt.string ppf s let dump ppf t = Fmt.Dump.(list dump_line) ppf t let pp ?syntax ppf t = Fmt.pf ppf "%a\n" Fmt.(list ~sep:(any "\n") (pp_line ?syntax)) t let to_string = Fmt.to_to_string pp let envs t = List.fold_left (fun acc line -> match line with | Block b -> ( match b.value with | OCaml { env; _ } | Toplevel { env; _ } -> Ocaml_env.Set.add env acc | Raw _ | Cram _ | Include _ -> acc) | Section _ | Text _ -> acc) Ocaml_env.Set.empty t
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>