package forester
A tool for tending mathematical forests
Install
Dune Dependency
Authors
Maintainers
Sources
3.1.0.tar.gz
md5=3512b493a31b0d1073ba4e48e8058493
sha512=b6e5ad2f86132d1874cb943546375e2f1b987a0c65628d71f17827f1ff7435df476c86fb135b34b3ff302f99ea54a21b90730257e12aa41cce170fae57c422b0
doc/src/forester.prelude/String_util.ml.html
Source file String_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
let index_of_first_ascii_char word = let rx = Str.regexp "\\([A-za-z]\\)" in try Option.some @@ Str.search_forward rx word 0 with _ -> None let title_case_word ix word = if ix = 0 then begin match index_of_first_ascii_char word with | None -> word | Some i -> word |> String.mapi @@ fun j c -> if i = j then Char.uppercase_ascii c else c end else word let sentence_case str = let words = String.split_on_char ' ' str in String.concat " " @@ List.mapi title_case_word words let trim_newlines str = let rec process_lines lines = match lines with | [] -> [] | "" :: lines -> process_lines lines | _ -> lines in let lines = String.split_on_char '\n' str in String.concat "\n" @@ List.rev @@ process_lines @@ List.rev @@ process_lines lines let trim_trailing_whitespace str = let rec process_chars rstr = match rstr with | '\n' :: rstr -> process_chars rstr | ' ' :: rstr -> process_chars rstr | '\t' :: rstr -> process_chars rstr | _ -> List.rev rstr in let n = String.length str in let chars = List.rev @@ List.init n (String.get str) in String.of_seq @@ List.to_seq @@ process_chars @@ chars
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>