package mdx
Executable code blocks inside markdown files
Install
Dune Dependency
Authors
Maintainers
Sources
mdx-2.0.0.tbz
sha256=65b4cc7ff8891b8b1d183be13c26eb45ddbc5a8081ac6e200fd8ae043d592e45
sha512=676d73dd20586ad5457ad96c9f0b11d88a2caf5763935a317db88076fd611cedd27499bd574a140ed9f6c00d2b80e7e92e2cf66d5aece9e2bbc16ea9ad69fc67
doc/src/mdx/util.ml.html
Source file util.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
(* * Copyright (c) 2019 Nathan Rebours <nathan.p.rebours@gmail.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. *) open Result module Result = struct module Infix = struct let ( >>= ) r f = match r with Ok x -> f x | Error _ as e -> e let ( >>| ) r f = match r with Ok x -> Ok (f x) | Error _ as e -> e let ( >>! ) r f = match r with | Ok x -> f x | Error (`Msg e) -> Printf.eprintf "[mdx] Fatal error: %s\n" e; 1 end let errorf fmt = Format.ksprintf (fun s -> Error (`Msg s)) fmt module List = struct open Infix let fold ~f ~init l = let rec go acc = function | [] -> Ok acc | hd :: tl -> f acc hd >>= fun acc -> go acc tl in go init l let map ~f l = fold ~f:(fun acc elm -> f elm >>| fun elm' -> elm' :: acc) ~init:[] l >>| List.rev end end module File = struct let read_lines file = let ic = open_in file in let r = ref [] in try while true do r := input_line ic :: !r done; assert false with End_of_file -> close_in ic; List.rev !r end module Option = struct let is_some = function Some _ -> true | None -> false let value ~default = function Some v -> v | None -> default end module Sexp = struct type t = Atom of string | List of t list end module Csexp = Csexp.Make (Sexp) module String = struct let english_concat ~last_sep words = let pf = Printf.sprintf in let rec aux acc = function | [] -> acc | [ last ] -> pf "%s %s %s" acc last_sep last | hd :: tl -> aux (pf "%s, %s" acc hd) tl in match words with | [] -> invalid_arg "Util.String.english_concat" | hd :: tl -> aux hd tl let english_conjonction words = english_concat ~last_sep:"and" words end module List = struct let find_map f l = let rec aux = function | [] -> None | h :: t -> ( match f h with Some x -> Some x | None -> aux t) in aux l end module Array = struct let slice t ~from ~to_ = let start_index, length = (from, to_ - from + 1) in Array.sub t start_index length end module Process = struct let wait ~pid = match snd (Unix.waitpid [] pid) with WEXITED n -> n | _ -> 255 end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>