package devkit
Development kit - general purpose library
Install
Dune Dependency
Authors
Maintainers
Sources
devkit-1.3.tbz
sha256=dae965685dceed47ad8e9844f12fe707dafdf2c3bdd46d0431d5b4d1e7754b23
sha512=b94ade804d751db87434042bbaa821fa8e82e233820a76806f910e2da040094b137e88a3579911a1626930912622b064c776ddbcb6991fb7111021ebf6553fdc
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)"
>