package odoc
OCaml Documentation Generator
Install
Dune Dependency
Authors
Maintainers
Sources
odoc-3.0.0.tbz
sha256=ce84fa7e0cc5f3e8a54e6adeb10826152798b602057b9e46c5ae7e5d5206812b
sha512=9febd413450ca2e3824c9ef7e1c9ae8d8094aa72ed71327a69d8d6b42f6f197b3f3f40d674de0d11fa1242ee0df95c693b5d74467d530704e1339f3a523452f6
doc/src/odoc.model/names.ml.html
Source file names.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 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
open Odoc_utils (** Returns [true] on chars that are part of operators. *) let operator_char = function (* https://ocaml.org/manual/5.2/lex.html#core-operator-char *) | '$' | '&' | '*' | '+' | '-' | '/' | '=' | '>' | '@' | '^' | '|' | '~' | '!' | '?' | '%' | '<' | ':' | '.' (* https://ocaml.org/manual/5.2/lex.html#infix-symbol *) | '#' (* https://ocaml.org/manual/5.2/indexops.html#s:index-operators *) | '(' | ')' | '[' | ']' | '{' | '}' -> true | _ -> false let is_operator = function | "asr" | "land" | "lor" | "lsl" | "lsr" | "lxor" | "mod" | "or" -> true | name -> String.exists operator_char name let parenthesise name = if is_operator name then "(" ^ name ^ ")" else name let contains_double_underscore s = let len = String.length s in let rec aux i = if i > len - 2 then false else if s.[i] = '_' && s.[i + 1] = '_' then true else aux (i + 1) in aux 0 module type Name = sig type t val to_string : t -> string val to_string_unsafe : t -> string val make_std : string -> t val of_ident : Ident.t -> t val shadowed_of_string : string -> t val shadowed_of_ident : Ident.t -> t val equal_modulo_shadowing : t -> t -> bool val equal : t -> t -> bool val compare : t -> t -> int val fmt : Format.formatter -> t -> unit end let internal_counter = ref 0 let unique_id = ref None let set_unique_ident id = match !unique_id with | Some _ -> failwith "Unique id already set" | None -> unique_id := Some id module Name : Name = struct type t = | Hidden of string | Shadowed of string * int * string | Std of string let to_string = function | Std s -> parenthesise s | Hidden s -> Printf.sprintf "%s" s | Shadowed (s, i, s2) -> Printf.sprintf "{%s}%d/shadowed/(%s)" s i s2 let to_string_unsafe = function | Std s -> s | Hidden s -> s | Shadowed (s, _i, _s2) -> s let make_std s = Std s let of_ident id = make_std (Ident.name id) let id = Hidden id let id = hidden_of_string (Ident.name id) let shadowed_of_string id = incr internal_counter; match !unique_id with | None -> failwith "Unset unique id" | Some s -> Shadowed (id, !internal_counter, s) let shadowed_of_ident id = shadowed_of_string (Ident.name id) let equal_modulo_shadowing (x : t) (y : t) = match (x, y) with | Std x, Std y -> x = y | Hidden x, Std y -> x = y | Std x, Hidden y -> x = y | Hidden x, Hidden y -> x = y | Shadowed (x, i, s), Shadowed (y, j, t) -> x = y && i = j && s = t | _, _ -> false let equal (x : t) (y : t) = x = y let compare = compare let fmt ppf x = Format.fprintf ppf "%s" (to_string x) let = function | Std _ -> false | Hidden _ -> true | Shadowed _ -> true end module type SimpleName = sig type t val to_string : t -> string val make_std : string -> t val of_ident : Ident.t -> t val equal : t -> t -> bool val compare : t -> t -> int val fmt : Format.formatter -> t -> unit end module SimpleName : SimpleName = struct type t = string let to_string s = s let make_std s = s let of_ident id = make_std (Ident.name id) let equal (x : t) (y : t) = x = y let compare x y = String.compare x y let fmt ppf t = Format.pp_print_string ppf (to_string t) let s = contains_double_underscore s end module ModuleName = struct include Name let s = is_hidden s || contains_double_underscore (to_string s) end module ModuleTypeName = Name module TypeName = Name module ConstructorName = SimpleName module FieldName = SimpleName module ExtensionName = SimpleName module ExceptionName = SimpleName module ValueName = Name module MethodName = SimpleName module InstanceVariableName = SimpleName module LabelName = SimpleName module PageName = SimpleName module DefName = SimpleName module LocalName = SimpleName module AssetName = SimpleName
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>