package devkit
Development kit - general purpose library
Install
Dune Dependency
Authors
Maintainers
Sources
devkit-1.20240429.tbz
sha256=222f8ac131b1d970dab7eeb2714bfd6b9338b88b1082e6e01c136ae19e7eaef4
sha512=c9e6d93e3d21e5530c0f4d5baca51bf1f0a5d19248f8af7678d0665bb5cdf295d7aaaaa3e50eb2e44b8720e55097cc675af4dc8ec45acf9da39feb3eae1405d5
doc/src/devkit.core/extArg.ml.html
Source file extArg.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
open Printf open Prelude include Arg let describe t name = function | "" -> sprintf "<%s> %s" t name | s when s.[0] = ' ' -> sprintf "<%s>%s" t s | s -> s let make_arg x = fun name var desc -> "-"^name, x#store var, sprintf "%s (default: %s)" (describe x#kind name desc) (x#show var) let test_int f = object method store v = Arg.Int (fun x -> if not (f x) then Exn.fail "Bad value %d" x; v := x) method kind = "int" method show v = string_of_int !v end let int = object method store v = Arg.Set_int v method kind = "int" method show v = string_of_int !v end let float = object method store v = Arg.Set_float v method kind = "float" method show v = string_of_float !v end let string = object method store v = Arg.Set_string v method kind = "string" method show v = !v end let duration = object method store v = Arg.String (fun s -> v := Time.of_compact_duration s) method kind = "duration" method show v = Time.compact_duration !v end let int_option = object method store v = Arg.Int (fun x -> v := Some x) method kind = "int" method show v = Option.map_default string_of_int "none" !v end let float_option = object method store v = Arg.Float (fun x -> v := Some x) method kind = "float" method show v = Option.map_default string_of_float "none" !v end let str_option = object method store v = Arg.String (fun x -> v := Some x) method kind = "string" method show v = Option.map_default id "none" !v end let int = make_arg int let float = make_arg float let str = make_arg string let duration = make_arg duration let may_int = make_arg int_option let may_float = make_arg float_option let may_str = make_arg str_option let positive_int = make_arg (test_int (fun x -> x > 0)) let bool name var desc = "-"^name, Arg.Set var, (if desc = "" then sprintf " enable %s" name else if desc.[0] <> ' ' then " " ^ desc else desc) let usage_header = "Available options are:" let align ?(sep="#") args = let open ExtString in let convert ~sub ~by (a, b, doc) = let (doc:doc) = try if doc = "" || doc.[0] = ' ' then doc else let (left, right) = String.split doc by in (Stre.replace_all ~str:left ~sub ~by) ^ " " ^ right with Invalid_string -> doc in (a, b, doc) in args |> List.map (convert ~sub:" " ~by:sep) |> align |> List.map (convert ~sub:sep ~by:" ") let parse ?f args = let f = Option.default (fun s -> Exn.fail "unrecognized argument %S, try \"-help\"" s) f in parse (align args) f usage_header let usage args = Arg.usage (align args) usage_header (* "-"^name, Arg.Set_int var, sprintf "%s (default: %i)" (describe "int" name desc) !var *) (* let arg_str name ?desc var = "-"^name, Arg.Set_string var, sprintf "%s (default: %s)" (describe "string" name desc) !var *) let two_strings k = (let old = ref "" in Arg.Tuple [ Arg.String (fun x -> old := x); Arg.String (fun s -> k !old s) ]) let rest () = let n = Array.length Sys.argv in if !Arg.current >= n then [] else Array.to_list @@ Array.sub Sys.argv (!Arg.current+1) (Array.length Sys.argv - !Arg.current - 1)
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>