UNPKG

@elliottcable/bs-cmdliner

Version:

Cmdliner — Declarative definition of command line interfaces for OCaml

262 lines (250 loc) 6.79 kB
'use strict'; var $$Map = require("bs-platform/lib/js/map.js"); var Char = require("bs-platform/lib/js/char.js"); var List = require("bs-platform/lib/js/list.js"); var Block = require("bs-platform/lib/js/block.js"); var Curry = require("bs-platform/lib/js/curry.js"); var $$String = require("bs-platform/lib/js/string.js"); var Caml_obj = require("bs-platform/lib/js/caml_obj.js"); var Caml_string = require("bs-platform/lib/js/caml_string.js"); var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions.js"); var Cmap = $$Map.Make([Char.compare]); var empty_001 = /* succs */Cmap[/* empty */0]; var empty = /* record */[ /* v : Nil */1, empty_001 ]; function is_empty(t) { return Caml_obj.caml_equal(t, empty); } function add(t, k, d) { var loop = function (t, k, len, i, d, pre_d) { var match = i === len; if (match) { var t$prime_000 = /* v : Key */Block.__(1, [d]); var t$prime_001 = /* succs */t[/* succs */1]; var t$prime = /* record */[ t$prime_000, t$prime_001 ]; var match$1 = t[/* v */0]; if (typeof match$1 === "number" || match$1.tag !== 1) { return /* `New */[ 3901504, t$prime ]; } else { return /* `Replaced */[ -238509616, /* tuple */[ match$1[0], t$prime ] ]; } } else { var v = t[/* v */0]; var v$1; v$1 = typeof v === "number" ? ( v === 0 ? /* Amb */0 : pre_d ) : ( v.tag ? v : /* Amb */0 ); var t$prime$1; try { t$prime$1 = Curry._2(Cmap[/* find */21], Caml_string.get(k, i), t[/* succs */1]); } catch (exn){ if (exn === Caml_builtin_exceptions.not_found) { t$prime$1 = empty; } else { throw exn; } } var match$2 = loop(t$prime$1, k, len, i + 1 | 0, d, pre_d); if (match$2[0] >= 3901504) { return /* `New */[ 3901504, /* record */[ /* v */v$1, /* succs */Curry._3(Cmap[/* add */3], Caml_string.get(k, i), match$2[1], t[/* succs */1]) ] ]; } else { var match$3 = match$2[1]; return /* `Replaced */[ -238509616, /* tuple */[ match$3[0], /* record */[ /* v */v$1, /* succs */Curry._3(Cmap[/* add */3], Caml_string.get(k, i), match$3[1], t[/* succs */1]) ] ] ]; } } }; return loop(t, k, k.length, 0, d, /* Pre */Block.__(0, [d])); } function find_node(t, k) { var _t = t; var k$1 = k; var len = k.length; var _i = 0; while(true) { var i = _i; var t$1 = _t; if (i === len) { return t$1; } else { _i = i + 1 | 0; _t = Curry._2(Cmap[/* find */21], Caml_string.get(k$1, i), t$1[/* succs */1]); continue ; } }; } function find(t, k) { try { var match = find_node(t, k)[/* v */0]; if (typeof match === "number") { if (match !== 0) { return /* Not_found */-358247754; } else { return /* Ambiguous */-328798100; } } else { return /* `Ok */[ 17724, match[0] ]; } } catch (exn){ if (exn === Caml_builtin_exceptions.not_found) { return /* Not_found */-358247754; } else { throw exn; } } } function ambiguities(t, p) { try { var t$1 = find_node(t, p); var match = t$1[/* v */0]; if (typeof match === "number" && match === 0) { var add_char = function (s, c) { return s + $$String.make(1, c); }; var rem_char = function (s) { return $$String.sub(s, 0, s.length - 1 | 0); }; var to_list = function (m) { return Curry._3(Cmap[/* fold */10], (function (k, t, acc) { return /* :: */[ /* tuple */[ k, t ], acc ]; }), m, /* [] */0); }; var _acc = /* [] */0; var _p = p; var _param = /* :: */[ to_list(t$1[/* succs */1]), /* [] */0 ]; while(true) { var param = _param; var p$1 = _p; var acc = _acc; if (param) { var match$1 = param[0]; if (match$1) { var match$2 = match$1[0]; var t$2 = match$2[1]; var p$prime = add_char(p$1, match$2[0]); var match$3 = t$2[/* v */0]; var acc$prime; if (typeof match$3 === "number") { if (match$3 === 0) { acc$prime = acc; } else { throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "cmdliner_trie.ml", 69, 21 ] ]; } } else { acc$prime = match$3.tag ? /* :: */[ p$prime, acc ] : acc; } _param = /* :: */[ to_list(t$2[/* succs */1]), /* :: */[ match$1[1], param[1] ] ]; _p = p$prime; _acc = acc$prime; continue ; } else { var rest = param[1]; if (rest) { _param = rest; _p = rem_char(p$1); continue ; } else { return acc; } } } else { throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "cmdliner_trie.ml", 74, 16 ] ]; } }; } else { return /* [] */0; } } catch (exn){ if (exn === Caml_builtin_exceptions.not_found) { return /* [] */0; } else { throw exn; } } } function of_list(l) { var add$1 = function (t, param) { var match = add(t, param[0], param[1]); if (match[0] >= 3901504) { return match[1]; } else { return match[1][1]; } }; return List.fold_left(add$1, empty, l); } exports.empty = empty; exports.is_empty = is_empty; exports.add = add; exports.find = find; exports.ambiguities = ambiguities; exports.of_list = of_list; /* Cmap Not a pure module */