package odoc
OCaml Documentation Generator
Install
Dune Dependency
Authors
Maintainers
Sources
odoc-3.0.0.tbz
sha256=ce84fa7e0cc5f3e8a54e6adeb10826152798b602057b9e46c5ae7e5d5206812b
sha512=9febd413450ca2e3824c9ef7e1c9ae8d8094aa72ed71327a69d8d6b42f6f197b3f3f40d674de0d11fa1242ee0df95c693b5d74467d530704e1339f3a523452f6
doc/src/odoc.odoc_utils/odoc_utils.ml.html
Source file odoc_utils.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
(** Re-export for compatibility with 4.02. *) type ('a, 'b) result = ('a, 'b) Result.result = Ok of 'a | Error of 'b (** The [result] type and a bind operator. This module is meant to be opened. *) module ResultMonad = struct (** Re-export for compat *) type ('a, 'b) result = ('a, 'b) Result.result = Ok of 'a | Error of 'b let map_error f = function Ok _ as ok -> ok | Error e -> Error (f e) let of_option ~error = function Some x -> Ok x | None -> Error error let bind m f = match m with Ok x -> f x | Error _ as e -> e let ( >>= ) = bind end (** A bind operator for the [option] type. This module is meant to be opened. *) module OptionMonad = struct (* The error case become [None], the error value is ignored. *) let of_result = function Result.Ok x -> Some x | Error _ -> None let return x = Some x let bind m f = match m with Some x -> f x | None -> None let ( >>= ) = bind end module EitherMonad = struct type ('a, 'b) t = Left of 'a | Right of 'b let return x = Right x let return_left x = Left x let bind m f = match m with Right x -> f x | Left y -> Left y let bind_left m f = match m with Left x -> f x | Right y -> Right y let ( >>= ) = bind let of_option ~left = function Some x -> Right x | None -> Left left let of_result = function Result.Ok x -> Right x | Error y -> Left y end module List = Odoc_list module Option = struct let map f = function None -> None | Some x -> Some (f x) let is_some = function None -> false | Some _ -> true end module Result = struct include Result let join = function Ok r -> r | Error _ as e -> e end module Fun = struct exception Finally_raised of exn let protect ~(finally : unit -> unit) work = let finally_no_exn () = try finally () with e -> raise (Finally_raised e) in match work () with | result -> finally_no_exn (); result | exception work_exn -> finally_no_exn (); raise work_exn end module Tree = Tree module Forest = Tree.Forest module Json = Json module Io_utils = struct (** [with_open_*] are resource safe wrappers around opening and closing channels. They are equivalent to the same functions in OCaml 4.14's [In_channel] and [Out_channel]. *) let _with_resource res ~close f = Fun.protect ~finally:(fun () -> close res) (fun () -> f res) let with_open_in fname f = _with_resource (open_in fname) ~close:close_in_noerr f let with_open_in_bin fname f = _with_resource (open_in_bin fname) ~close:close_in_noerr f (** Read a file line-by-line by folding [f]. *) let fold_lines fname f acc = _with_resource (open_in fname) ~close:close_in_noerr (fun ic -> let rec loop acc = match input_line ic with | exception End_of_file -> acc | line -> loop (f line acc) in loop acc) (** Read a file as a list of lines. *) let read_lines fname = List.rev (fold_lines fname (fun line acc -> line :: acc) []) let with_open_out fname f = _with_resource (open_out fname) ~close:close_out_noerr f let with_open_out_bin fname f = _with_resource (open_out_bin fname) ~close:close_out_noerr f (** Like [with_open_out] but operate on a [Format] buffer. *) let with_formatter_out fname f = with_open_out fname (fun oc -> f (Format.formatter_of_out_channel oc)) (** Shortcuts for composing [with_open_*] functions and [Marshal]. *) let marshal fname v = with_open_out_bin fname (fun oc -> Marshal.to_channel oc v []) let unmarshal fname = with_open_in_bin fname Marshal.from_channel end include Astring
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>