package odoc
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
OCaml documentation generator
Install
dune-project
Dependency
Authors
Maintainers
Sources
odoc-2.1.1.tbz
sha256=f574dbd28cd0fc3a2b95525c4bb95ddf6d1f6408bb4fe12157fa537884f987fd
sha512=1c545c281a7022a167f028fff8cec6fb3f2f82da0881431be74e7a4281c5353ed83bfbdb4d9d9e08af6755dbe3505c052c5e5b58cdeb08c57aed5e89c0f15e91
doc/src/odoc.html/tree.ml.html
Source file tree.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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136(* * Copyright (c) 2016 Thomas Refis <trefis@janestreet.com> * * 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. *) module Html = Tyxml.Html type uri = Absolute of string | Relative of Odoc_document.Url.Path.t option let page_creator ?(theme_uri = Relative None) ?(support_uri = Relative None) ~url name header toc content = let path = Link.Path.for_printing url in let head : Html_types.head Html.elt = let title_string = Printf.sprintf "%s (%s)" name (String.concat "." path) in let file_uri base file = match base with | Absolute uri -> uri ^ "/" ^ file | Relative uri -> let page = Odoc_document.Url.Path.{ kind = `File; parent = uri; name = file } in Link.href ~resolve:(Current url) (Odoc_document.Url.from_path page) in let odoc_css_uri = file_uri theme_uri "odoc.css" in let highlight_js_uri = file_uri support_uri "highlight.pack.js" in Html.head (Html.title (Html.txt title_string)) [ Html.link ~rel:[ `Stylesheet ] ~href:odoc_css_uri (); Html.meta ~a:[ Html.a_charset "utf-8" ] (); Html.meta ~a:[ Html.a_name "generator"; Html.a_content "odoc 2.1.1" ] (); Html.meta ~a: [ Html.a_name "viewport"; Html.a_content "width=device-width,initial-scale=1.0"; ] (); Html.script ~a:[ Html.a_src highlight_js_uri ] (Html.txt ""); Html.script (Html.txt "hljs.initHighlightingOnLoad();"); ] in let = let rec get_parents x = match x with | [] -> [] | x :: xs -> ( match Odoc_document.Url.Path.of_list (List.rev (x :: xs)) with | Some x -> x :: get_parents xs | None -> get_parents xs) in let parents = get_parents (List.rev (Odoc_document.Url.Path.to_list url)) |> List.rev in let href page = Link.href ~resolve:(Current url) (Odoc_document.Url.from_path page) in let ~up_url = [ Html.nav ~a:[ Html.a_class [ "odoc-nav" ] ] ([ Html.a ~a:[ Html.a_href up_url ] [ Html.txt "Up" ]; Html.txt " – "; ] @ breadcrumbs); ] in match parents with | [] -> [] (* Can't happen - Url.Path.to_list returns a non-empty list *) | [ _ ] -> [] (* No parents *) | [ x; { name = "index"; _ } ] -> (* Special case leaf pages called 'index' with one parent. This is for files called index.mld that would otherwise clash with their parent. In particular, dune and odig both cause this situation right now. *) let up_url = "../index.html" in let parent_name = x.name in make_navigation ~up_url [ Html.txt parent_name ] | _ -> let up_url = href (List.hd (List.tl (List.rev parents))) in let l = (* Create breadcrumbs *) let space = Html.txt " " in parents |> Utils.list_concat_map ?sep:(Some [ space; Html.entity "#x00BB"; space ]) ~f:(fun url' -> [ [ (if url = url' then Html.txt url.name else Html.a ~a:[ Html.a_href (href url') ] [ Html.txt url'.name ]); ]; ]) |> List.flatten in make_navigation ~up_url l in let body = breadcrumbs @ [ Html.header ~a:[ Html.a_class [ "odoc-preamble" ] ] header ] @ toc @ [ Html.div ~a:[ Html.a_class [ "odoc-content" ] ] content ] in Html.html head (Html.body ~a:[ Html.a_class [ "odoc" ] ] body) let make ?theme_uri ?support_uri ~indent ~url ~header ~toc title content children = let filename = Link.Path.as_filename url in let html = page_creator ?theme_uri ?support_uri ~url title header toc content in let content ppf = (Html.pp ~indent ()) ppf html in { Odoc_document.Renderer.filename; content; children } let open_details = ref true
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>