@elliottcable/bs-cmdliner
Version:
Cmdliner — Declarative definition of command line interfaces for OCaml
1,329 lines (1,285 loc) • 65.8 kB
JavaScript
'use strict';
var Sys = require("bs-platform/lib/js/sys.js");
var List = require("bs-platform/lib/js/list.js");
var Block = require("bs-platform/lib/js/block.js");
var Bytes = require("bs-platform/lib/js/bytes.js");
var Curry = require("bs-platform/lib/js/curry.js");
var $$Buffer = require("bs-platform/lib/js/buffer.js");
var Format = require("bs-platform/lib/js/format.js");
var Printf = require("bs-platform/lib/js/printf.js");
var $$String = require("bs-platform/lib/js/string.js");
var Caml_obj = require("bs-platform/lib/js/caml_obj.js");
var Caml_sys = require("bs-platform/lib/js/caml_sys.js");
var Filename = require("bs-platform/lib/js/filename.js");
var Caml_array = require("bs-platform/lib/js/caml_array.js");
var Caml_bytes = require("bs-platform/lib/js/caml_bytes.js");
var Pervasives = require("bs-platform/lib/js/pervasives.js");
var Caml_option = require("bs-platform/lib/js/caml_option.js");
var Caml_string = require("bs-platform/lib/js/caml_string.js");
var Cmdliner_base = require("./cmdliner_base.bs.js");
var Caml_js_exceptions = require("bs-platform/lib/js/caml_js_exceptions.js");
var Caml_external_polyfill = require("bs-platform/lib/js/caml_external_polyfill.js");
var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions.js");
var s_name = "NAME";
var s_synopsis = "SYNOPSIS";
var s_description = "DESCRIPTION";
var s_commands = "COMMANDS";
var s_arguments = "ARGUMENTS";
var s_options = "OPTIONS";
var s_common_options = "COMMON OPTIONS";
var s_exit_status = "EXIT STATUS";
var s_environment = "ENVIRONMENT";
var s_files = "FILES";
var s_examples = "EXAMPLES";
var s_bugs = "BUGS";
var s_authors = "AUTHORS";
var s_see_also = "SEE ALSO";
var order = /* array */[
s_name,
s_synopsis,
s_description,
"",
s_commands,
s_arguments,
s_options,
s_common_options,
s_exit_status,
s_environment,
s_files,
s_examples,
s_bugs,
s_authors,
s_see_also
];
function section_to_order(on_unknown, s) {
var max = order.length - 1 | 0;
var _i = 0;
while(true) {
var i = _i;
var match = i > max;
if (match) {
return on_unknown;
} else if (Caml_array.caml_array_get(order, i) === s) {
return i;
} else {
_i = i + 1 | 0;
continue ;
}
};
}
function smap_of_blocks(bs) {
var loop = function (_s, _s_o, _rbs, _smap, _param) {
while(true) {
var param = _param;
var smap = _smap;
var rbs = _rbs;
var s_o = _s_o;
var s = _s;
if (param) {
var c = param[0];
var exit = 0;
if (typeof c === "number") {
exit = 1;
} else {
var variant = c[0];
if (variant !== 83) {
if (variant >= -595680601) {
exit = 1;
} else {
var match = loop(s, s_o, rbs, smap, c[1]);
_param = param[1];
_smap = match[3];
_rbs = match[2];
_s_o = match[1];
_s = match[0];
continue ;
}
} else {
var new_sec = c[1];
var new_o = section_to_order(s_o, new_sec);
_param = param[1];
_smap = /* :: */[
/* tuple */[
s,
/* tuple */[
s_o,
rbs
]
],
smap
];
_rbs = /* [] */0;
_s_o = new_o;
_s = new_sec;
continue ;
}
}
if (exit === 1) {
_param = param[1];
_rbs = /* :: */[
c,
rbs
];
continue ;
}
} else {
return /* tuple */[
s,
s_o,
rbs,
smap
];
}
};
};
var match;
if (bs) {
var match$1 = bs[0];
if (typeof match$1 === "number") {
match = /* tuple */[
"",
bs
];
} else {
var variant = match$1[0];
if (variant !== -595680602) {
match = variant !== 83 ? /* tuple */[
"",
bs
] : /* tuple */[
match$1[1],
bs[1]
];
} else {
var match$2 = match$1[1];
if (match$2) {
var match$3 = match$2[0];
match = typeof match$3 === "number" || match$3[0] !== 83 ? /* tuple */[
"",
bs
] : /* tuple */[
match$3[1],
/* :: */[
/* `Blocks */[
-595680602,
match$2[1]
],
bs[1]
]
];
} else {
match = /* tuple */[
"",
bs
];
}
}
}
} else {
match = /* tuple */[
"",
bs
];
}
var first = match[0];
var first_o = section_to_order(1, first);
var match$4 = loop(first, first_o, /* [] */0, /* [] */0, match[1]);
return /* :: */[
/* tuple */[
match$4[0],
/* tuple */[
match$4[1],
match$4[2]
]
],
match$4[3]
];
}
function smap_to_blocks(smap) {
if (smap) {
var match = smap[0];
var _acc = /* [] */0;
var _smap = smap[1];
var _s = match[0];
var _param = match[1][1];
while(true) {
var param = _param;
var s = _s;
var smap$1 = _smap;
var acc = _acc;
if (param) {
_param = param[1];
_acc = /* :: */[
param[0],
acc
];
continue ;
} else {
var acc$1 = s === "" ? acc : /* :: */[
/* `S */[
83,
s
],
acc
];
if (smap$1) {
var match$1 = smap$1[0];
_param = match$1[1][1];
_s = match$1[0];
_smap = smap$1[1];
_acc = acc$1;
continue ;
} else {
return acc$1;
}
}
};
} else {
return /* [] */0;
}
}
function smap_has_section(smap, sec) {
return List.exists((function (param) {
return Caml_obj.caml_equal(sec, param[0]);
}), smap);
}
function smap_append_block(smap, sec, b) {
var o = section_to_order(3, sec);
var loop = function (_max_lt_o, _left, _param) {
while(true) {
var param = _param;
var left = _left;
var max_lt_o = _max_lt_o;
if (param) {
var right = param[1];
var s = param[0];
var match = s[1];
var o$1 = match[0];
if (s[0] === sec) {
return /* Ok */Block.__(0, [List.rev_append(/* :: */[
/* tuple */[
sec,
/* tuple */[
o$1,
/* :: */[
b,
match[1]
]
]
],
left
], right)]);
} else {
var max_lt_o$1 = o$1 < o && o$1 > max_lt_o ? o$1 : max_lt_o;
_param = right;
_left = /* :: */[
s,
left
];
_max_lt_o = max_lt_o$1;
continue ;
}
} else if (max_lt_o !== -1) {
return /* Error */Block.__(1, [max_lt_o]);
} else {
return /* Ok */Block.__(0, [List.rev(/* :: */[
/* tuple */[
sec,
/* tuple */[
o,
/* :: */[
b,
/* [] */0
]
]
],
left
])]);
}
};
};
var try_insert = loop(-1, /* [] */0, smap);
if (try_insert.tag) {
var insert_before = try_insert[0];
var _left = /* [] */0;
var _right = smap;
while(true) {
var right = _right;
var left = _left;
if (right) {
var s = right[0];
if (s[1][0] === insert_before) {
return List.rev_append(/* :: */[
/* tuple */[
sec,
/* tuple */[
o,
/* :: */[
b,
/* [] */0
]
]
],
left
], right);
} else {
_right = right[1];
_left = /* :: */[
s,
left
];
continue ;
}
} else {
throw [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"cmdliner_manpage.ml",
131,
14
]
];
}
};
} else {
return try_insert[0];
}
}
function pp_indent(ppf, c) {
for(var i = 1; i <= c; ++i){
Format.pp_print_char(ppf, /* " " */32);
}
return /* () */0;
}
function err(e, fmt) {
return Format.fprintf(e, Pervasives.$caret$caret(/* Format */[
/* String_literal */Block.__(11, [
"cmdliner error: ",
/* End_of_format */0
]),
"cmdliner error: "
], Pervasives.$caret$caret(fmt, /* Format */[
/* Formatting_lit */Block.__(17, [
/* Flush_newline */4,
/* End_of_format */0
]),
"@."
])));
}
function err_unescaped(errs, c, s) {
return Curry._2(err(errs, /* Format */[
/* String_literal */Block.__(11, [
"unescaped ",
/* Caml_char */Block.__(1, [/* String_literal */Block.__(11, [
" in ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* End_of_format */0
])
])])
]),
"unescaped %C in %S"
]), c, s);
}
function err_malformed(errs, s) {
return Curry._1(err(errs, /* Format */[
/* String_literal */Block.__(11, [
"Malformed $(...) in ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* End_of_format */0
])
]),
"Malformed $(...) in %S"
]), s);
}
function err_unclosed(errs, s) {
return Curry._1(err(errs, /* Format */[
/* String_literal */Block.__(11, [
"Unclosed $(...) in ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* End_of_format */0
])
]),
"Unclosed $(...) in %S"
]), s);
}
function err_undef(errs, id, s) {
return Curry._2(err(errs, /* Format */[
/* String_literal */Block.__(11, [
"Undefined variable $(",
/* String */Block.__(2, [
/* No_padding */0,
/* String_literal */Block.__(11, [
") in ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* End_of_format */0
])
])
])
]),
"Undefined variable $(%s) in %S"
]), id, s);
}
function err_illegal_esc(errs, c, s) {
return Curry._2(err(errs, /* Format */[
/* String_literal */Block.__(11, [
"Illegal escape char ",
/* Caml_char */Block.__(1, [/* String_literal */Block.__(11, [
" in ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* End_of_format */0
])
])])
]),
"Illegal escape char %C in %S"
]), c, s);
}
function err_markup(errs, dir, s) {
return Curry._2(err(errs, /* Format */[
/* String_literal */Block.__(11, [
"Unknown cmdliner markup $(",
/* Char */Block.__(0, [/* String_literal */Block.__(11, [
",...) in ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* End_of_format */0
])
])])
]),
"Unknown cmdliner markup $(%c,...) in %S"
]), dir, s);
}
function is_markup_dir(param) {
if (param !== 98) {
return param === 105;
} else {
return true;
}
}
function is_markup_esc(param) {
var switcher = param - 36 | 0;
if (switcher > 5 || switcher < 0) {
return switcher === 56;
} else {
return switcher > 3 || switcher < 1;
}
}
function markup_need_esc(param) {
if (param !== 36) {
return param === 92;
} else {
return true;
}
}
function markup_text_need_esc(param) {
var switcher = param - 36 | 0;
if (switcher > 5 || switcher < 0) {
return switcher === 56;
} else {
return switcher > 4 || switcher < 1;
}
}
function $$escape(s) {
var max_i = s.length - 1 | 0;
var escaped_len = function (_i, _l) {
while(true) {
var l = _l;
var i = _i;
if (i > max_i) {
return l;
} else if (markup_text_need_esc(Caml_string.get(s, i))) {
_l = l + 2 | 0;
_i = i + 1 | 0;
continue ;
} else {
_l = l + 1 | 0;
_i = i + 1 | 0;
continue ;
}
};
};
var escaped_len$1 = escaped_len(0, 0);
if (escaped_len$1 === s.length) {
return s;
} else {
var b = Caml_bytes.caml_create_bytes(escaped_len$1);
var _i = 0;
var _k = 0;
while(true) {
var k = _k;
var i = _i;
if (i > max_i) {
return Bytes.unsafe_to_string(b);
} else {
var c = s.charCodeAt(i);
if (markup_text_need_esc(c)) {
b[k] = /* "\\" */92;
b[k + 1 | 0] = c;
_k = k + 2 | 0;
_i = i + 1 | 0;
continue ;
} else {
b[k] = c;
_k = k + 1 | 0;
_i = i + 1 | 0;
continue ;
}
}
};
}
}
function subst_vars(errs, subst, b, s) {
var max_i = s.length - 1 | 0;
var flush = function (start, stop) {
var match = start > max_i;
if (match) {
return /* () */0;
} else {
return $$Buffer.add_substring(b, s, start, (stop - start | 0) + 1 | 0);
}
};
var skip_escape = function (k, start, i) {
if (i > max_i) {
return err_unescaped(errs, /* "\\" */92, s);
} else {
return Curry._2(k, start, i + 1 | 0);
}
};
var skip_markup = function (k, start, _i) {
while(true) {
var i = _i;
if (i > max_i) {
err_unclosed(errs, s);
return Curry._2(k, start, i);
} else {
var c = Caml_string.get(s, i);
if (c !== 41) {
if (c !== 92) {
_i = i + 1 | 0;
continue ;
} else {
return skip_escape((function (param, param$1) {
return skip_markup(k, param, param$1);
}), start, i + 1 | 0);
}
} else {
return Curry._2(k, start, i + 1 | 0);
}
}
};
};
var loop = function (start, _i) {
while(true) {
var i = _i;
if (i > max_i) {
return flush(start, max_i);
} else {
var next = i + 1 | 0;
var c = Caml_string.get(s, i);
if (c !== 36) {
if (c !== 92) {
_i = next;
continue ;
} else {
return skip_escape(loop, start, next);
}
} else if (next > max_i) {
return err_unescaped(errs, /* "$" */36, s);
} else {
var match = Caml_string.get(s, next);
if (match !== 40) {
err_unescaped(errs, /* "$" */36, s);
_i = next;
continue ;
} else {
var min = next + 2 | 0;
if (min > max_i) {
err_unclosed(errs, s);
_i = next;
continue ;
} else {
var match$1 = Caml_string.get(s, min);
if (match$1 !== 44) {
var start_id = next + 1 | 0;
flush(start, i - 1 | 0);
var start$1 = start_id;
var _i$1 = start_id;
while(true) {
var i$1 = _i$1;
if (i$1 > max_i) {
err_unclosed(errs, s);
return loop(start$1, i$1);
} else if (Caml_string.get(s, i$1) !== /* ")" */41) {
_i$1 = i$1 + 1 | 0;
continue ;
} else {
var id = $$String.sub(s, start$1, i$1 - start$1 | 0);
var next$1 = i$1 + 1 | 0;
var match$2 = Curry._1(subst, id);
if (match$2 !== undefined) {
$$Buffer.add_string(b, match$2);
} else {
err_undef(errs, id, s);
$$Buffer.add_string(b, "undefined");
}
return loop(next$1, next$1);
}
};
} else {
return skip_markup(loop, start, min + 1 | 0);
}
}
}
}
}
};
};
$$Buffer.clear(b);
loop(0, 0);
return $$Buffer.contents(b);
}
function add_markup_esc(errs, k, b, s, start, next, target_need_escape, target_escape) {
var max_i = s.length - 1 | 0;
if (next > max_i) {
return err_unescaped(errs, /* "\\" */92, s);
} else {
var c = Caml_string.get(s, next);
if (is_markup_esc(Caml_string.get(s, next))) {
if (Curry._1(target_need_escape, c)) {
Curry._2(target_escape, b, c);
} else {
$$Buffer.add_char(b, c);
}
return Curry._2(k, next + 1 | 0, next + 1 | 0);
} else {
err_illegal_esc(errs, c, s);
return Curry._2(k, next + 1 | 0, next + 1 | 0);
}
}
}
function add_markup_text(errs, k, b, s, start, target_need_escape, target_escape) {
var max_i = s.length - 1 | 0;
var flush = function (start, stop) {
var match = start > max_i;
if (match) {
return /* () */0;
} else {
return $$Buffer.add_substring(b, s, start, (stop - start | 0) + 1 | 0);
}
};
var loop = function (_start, _i) {
while(true) {
var i = _i;
var start = _start;
if (i > max_i) {
err_unclosed(errs, s);
return flush(start, max_i);
} else {
var next = i + 1 | 0;
var c = Caml_string.get(s, i);
if (c !== 41) {
if (c !== 92) {
if (markup_text_need_esc(c)) {
err_unescaped(errs, c, s);
flush(start, i - 1 | 0);
_i = next;
_start = next;
continue ;
} else if (Curry._1(target_need_escape, c)) {
flush(start, i - 1 | 0);
Curry._2(target_escape, b, c);
_i = next;
_start = next;
continue ;
} else {
_i = next;
continue ;
}
} else {
flush(start, i - 1 | 0);
return add_markup_esc(errs, loop, b, s, start, next, target_need_escape, target_escape);
}
} else {
flush(start, i - 1 | 0);
return Curry._2(k, next, next);
}
}
};
};
return loop(start, start);
}
function doc_to_plain(errs, subst, b, s) {
var errs$1 = errs;
var b$1 = b;
var s$1 = subst_vars(errs, subst, b, s);
var max_i = s$1.length - 1 | 0;
var flush = function (start, stop) {
var match = start > max_i;
if (match) {
return /* () */0;
} else {
return $$Buffer.add_substring(b$1, s$1, start, (stop - start | 0) + 1 | 0);
}
};
var need_escape = function (param) {
return false;
};
var $$escape = function (param, param$1) {
throw [
Caml_builtin_exceptions.assert_failure,
/* tuple */[
"cmdliner_manpage.ml",
273,
19
]
];
};
var loop = function (_start, _i) {
while(true) {
var i = _i;
var start = _start;
if (i > max_i) {
return flush(start, max_i);
} else {
var next = i + 1 | 0;
var c = Caml_string.get(s$1, i);
if (c !== 36) {
if (c !== 92) {
if (markup_need_esc(c)) {
err_unescaped(errs$1, c, s$1);
flush(start, i - 1 | 0);
_i = next;
_start = next;
continue ;
} else {
_i = next;
continue ;
}
} else {
flush(start, i - 1 | 0);
return add_markup_esc(errs$1, loop, b$1, s$1, start, next, need_escape, $$escape);
}
} else if (next > max_i) {
return err_unescaped(errs$1, /* "$" */36, s$1);
} else {
var match = Caml_string.get(s$1, next);
if (match !== 40) {
err_unescaped(errs$1, /* "$" */36, s$1);
_i = next;
continue ;
} else {
var min = next + 2 | 0;
if (min > max_i) {
err_unclosed(errs$1, s$1);
_i = next;
continue ;
} else {
var match$1 = Caml_string.get(s$1, min);
if (match$1 !== 44) {
err_malformed(errs$1, s$1);
_i = next;
continue ;
} else {
var markup = Caml_string.get(s$1, min - 1 | 0);
if (is_markup_dir(markup)) {
var start_data = min + 1 | 0;
flush(start, i - 1 | 0);
return add_markup_text(errs$1, loop, b$1, s$1, start_data, need_escape, $$escape);
} else {
err_markup(errs$1, markup, s$1);
_i = next;
continue ;
}
}
}
}
}
}
};
};
$$Buffer.clear(b$1);
loop(0, 0);
return $$Buffer.contents(b$1);
}
function pp_to_temp_file(pp_v, v) {
try {
var exec = Curry._1(Filename.basename, Caml_array.caml_array_get(Sys.argv, 0));
var match = Filename.open_temp_file(undefined, undefined, exec, "out");
var oc = match[1];
var file = match[0];
var ppf = Format.formatter_of_out_channel(oc);
Curry._2(pp_v, ppf, v);
Format.pp_print_flush(ppf, /* () */0);
Pervasives.close_out(oc);
Pervasives.at_exit((function (param) {
try {
return Caml_external_polyfill.resolve("caml_sys_remove")(file);
}
catch (raw_exn){
var exn = Caml_js_exceptions.internalToOCamlException(raw_exn);
if (exn[0] === Caml_builtin_exceptions.sys_error) {
return /* () */0;
} else {
throw exn;
}
}
}));
return file;
}
catch (raw_exn){
var exn = Caml_js_exceptions.internalToOCamlException(raw_exn);
if (exn[0] === Caml_builtin_exceptions.sys_error) {
return undefined;
} else {
throw exn;
}
}
}
function find_cmd(cmds) {
var match;
match = /* tuple */[
"type",
"/dev/null"
];
var $$null = match[1];
var test = match[0];
var cmd = function (c) {
return Caml_sys.caml_sys_system_command(Curry._4(Printf.sprintf(/* Format */[
/* String */Block.__(2, [
/* No_padding */0,
/* Char_literal */Block.__(12, [
/* " " */32,
/* String */Block.__(2, [
/* No_padding */0,
/* String_literal */Block.__(11, [
" 1>",
/* String */Block.__(2, [
/* No_padding */0,
/* String_literal */Block.__(11, [
" 2>",
/* String */Block.__(2, [
/* No_padding */0,
/* End_of_format */0
])
])
])
])
])
])
]),
"%s %s 1>%s 2>%s"
]), test, c, $$null, $$null)) === 0;
};
try {
return List.find(cmd, cmds);
}
catch (exn){
if (exn === Caml_builtin_exceptions.not_found) {
return undefined;
} else {
throw exn;
}
}
}
function print(_$staropt$star, _$staropt$star$1, _fmt, ppf, page) {
while(true) {
var fmt = _fmt;
var $staropt$star = _$staropt$star$1;
var $staropt$star$1 = _$staropt$star;
var errs = $staropt$star$1 !== undefined ? Caml_option.valFromOption($staropt$star$1) : Format.err_formatter;
var subst = $staropt$star !== undefined ? $staropt$star : (function (x) {
return undefined;
});
if (fmt >= 726666127) {
if (fmt >= 757208580) {
var errs$1 = errs;
var subst$1 = subst;
var ppf$1 = ppf;
var param = page;
var match = param[0];
return Curry._7(Format.fprintf(ppf$1, /* Format */[
/* String_literal */Block.__(11, [
".\\\" Pipe this output to groff -Tutf8 | less",
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* String_literal */Block.__(11, [
".\\\"",
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* String_literal */Block.__(11, [
".mso an.tmac",
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* String_literal */Block.__(11, [
".TH \"",
/* String */Block.__(2, [
/* No_padding */0,
/* String_literal */Block.__(11, [
"\" ",
/* Int */Block.__(4, [
/* Int_d */0,
/* No_padding */0,
/* No_precision */0,
/* String_literal */Block.__(11, [
" \"",
/* String */Block.__(2, [
/* No_padding */0,
/* String_literal */Block.__(11, [
"\" \"",
/* String */Block.__(2, [
/* No_padding */0,
/* String_literal */Block.__(11, [
"\" \"",
/* String */Block.__(2, [
/* No_padding */0,
/* Char_literal */Block.__(12, [
/* "\"" */34,
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* String_literal */Block.__(11, [
".\\\" Disable hyphenation and ragged-right",
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* String_literal */Block.__(11, [
".nh",
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* String_literal */Block.__(11, [
".ad l",
/* Alpha */Block.__(15, [/* Formatting_lit */Block.__(17, [
/* FFlush */2,
/* End_of_format */0
])])
])
])
])
])
])
])
])
])
])
])
])
])
])
])
])
])
])
])
])
])
])
])
]),
".\\\" Pipe this output to groff -Tutf8 | less@\n.\\\"@\n.mso an.tmac@\n.TH \"%s\" %d \"%s\" \"%s\" \"%s\"@\n.\\\" Disable hyphenation and ragged-right@\n.nh@\n.ad l%a@?"
]), match[0], match[1], match[2], match[3], match[4], (function(errs$1,subst$1){
return function (param, param$1) {
var errs$2 = errs$1;
var subst$2 = subst$1;
var ppf = param;
var text = param$1;
var buf = $$Buffer.create(1024);
var markup = function (t) {
var errs$3 = errs$2;
var subst$3 = subst$2;
var b = buf;
var s = t;
var errs$4 = errs$3;
var b$1 = b;
var s$1 = subst_vars(errs$3, subst$3, b, s);
var max_i = s$1.length - 1 | 0;
var flush = function (start, stop) {
var match = start > max_i;
if (match) {
return /* () */0;
} else {
return $$Buffer.add_substring(b$1, s$1, start, (stop - start | 0) + 1 | 0);
}
};
var need_escape = function (param) {
var switcher = param - 39 | 0;
if (switcher > 7 || switcher < 0) {
return switcher === 53;
} else {
return switcher > 5 || switcher < 1;
}
};
var $$escape = function (b, c) {
return Curry._1(Printf.bprintf(b, /* Format */[
/* String_literal */Block.__(11, [
"\\N'",
/* Int */Block.__(4, [
/* Int_d */0,
/* No_padding */0,
/* No_precision */0,
/* Char_literal */Block.__(12, [
/* "'" */39,
/* End_of_format */0
])
])
]),
"\\N'%d'"
]), c);
};
var end_text = function (start, i) {
$$Buffer.add_string(b$1, "\\fR");
return loop(start, i);
};
var loop = function (_start, _i) {
while(true) {
var i = _i;
var start = _start;
if (i > max_i) {
return flush(start, max_i);
} else {
var next = i + 1 | 0;
var c = Caml_string.get(s$1, i);
if (c !== 36) {
if (c !== 92) {
if (markup_need_esc(c)) {
err_unescaped(errs$4, c, s$1);
flush(start, i - 1 | 0);
_i = next;
_start = next;
continue ;
} else if (need_escape(c)) {
flush(start, i - 1 | 0);
$$escape(b$1, c);
_i = next;
_start = next;
continue ;
} else {
_i = next;
continue ;
}
} else {
flush(start, i - 1 | 0);
return add_markup_esc(errs$4, loop, b$1, s$1, start, next, need_escape, $$escape);
}
} else if (next > max_i) {
return err_unescaped(errs$4, /* "$" */36, s$1);
} else {
var match = Caml_string.get(s$1, next);
if (match !== 40) {
err_unescaped(errs$4, /* "$" */36, s$1);
flush(start, i - 1 | 0);
_i = next;
_start = next;
continue ;
} else {
var min = next + 2 | 0;
if (min > max_i) {
err_unclosed(errs$4, s$1);
_i = next;
continue ;
} else {
var match$1 = Caml_string.get(s$1, min);
if (match$1 !== 44) {
err_malformed(errs$4, s$1);
_i = next;
continue ;
} else {
var start_data = min + 1 | 0;
flush(start, i - 1 | 0);
var markup = Caml_string.get(s$1, min - 1 | 0);
if (markup !== 98) {
if (markup !== 105) {
err_markup(errs$4, markup, s$1);
} else {
$$Buffer.add_string(b$1, "\\fI");
}
} else {
$$Buffer.add_string(b$1, "\\fB");
}
return add_markup_text(errs$4, end_text, b$1, s$1, start_data, need_escape, $$escape);
}
}
}
}
}
};
};
$$Buffer.clear(b$1);
loop(0, 0);
return $$Buffer.contents(b$1);
};
var pp_tokens = function (ppf, t) {
return Cmdliner_base.pp_tokens(false, ppf, t);
};
var pp_block = function (param) {
if (typeof param === "number") {
return Format.fprintf(ppf, /* Format */[
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* String_literal */Block.__(11, [
".sp -1",
/* End_of_format */0
])
]),
"@\n.sp -1"
]);
} else {
var variant = param[0];
if (variant !== 73) {
if (variant >= 83) {
if (variant >= 4003843) {
return Curry._2(Format.fprintf(ppf, /* Format */[
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* String_literal */Block.__(11, [
".P",
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* String_literal */Block.__(11, [
".nf",
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* Alpha */Block.__(15, [/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* String_literal */Block.__(11, [
".fi",
/* End_of_format */0
])
])])
])
])
])
])
]),
"@\n.P@\n.nf@\n%a@\n.fi"
]), Cmdliner_base.pp_lines, markup(param[1]));
} else {
return Curry._2(Format.fprintf(ppf, /* Format */[
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* String_literal */Block.__(11, [
".SH ",
/* Alpha */Block.__(15, [/* End_of_format */0])
])
]),
"@\n.SH %a"
]), pp_tokens, markup(param[1]));
}
} else if (variant >= 80) {
return Curry._2(Format.fprintf(ppf, /* Format */[
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* String_literal */Block.__(11, [
".P",
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* Alpha */Block.__(15, [/* End_of_format */0])
])
])
]),
"@\n.P@\n%a"
]), pp_tokens, markup(param[1]));
} else {
return List.iter(pp_block, param[1]);
}
} else {
var match = param[1];
return Curry._4(Format.fprintf(ppf, /* Format */[
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* String_literal */Block.__(11, [
".TP 4",
/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* Alpha */Block.__(15, [/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
/* Alpha */Block.__(15, [/* End_of_format */0])
])])
])
])
]),
"@\n.TP 4@\n%a@\n%a"
]), pp_tokens, markup(match[0]), pp_tokens, markup(match[1]));
}
}
};
return List.iter(pp_block, text);
}
}(errs$1,subst$1)), param[1]);
} else {
var match$1;
try {
match$1 = Caml_sys.caml_sys_getenv("TERM");
}
catch (exn){
if (exn === Caml_builtin_exceptions.not_found) {
match$1 = undefined;
} else {
throw exn;
}
}
var exit = 0;
if (match$1 !== undefined && match$1 !== "dumb") {
_fmt = /* Pager */-797271261;
_$staropt$star$1 = subst;
_$staropt$star = Caml_option.some(errs);
continue ;
} else {
exit = 1;
}
if (exit === 1) {
_fmt = /* Plain */-675583510;
_$staropt$star$1 = subst;
_$staropt$star = Caml_option.some(errs);
continue ;
}
}
} else if (fmt >= -675583510) {
var errs$2 = errs;
var subst$2 = subst;
var ppf$2 = ppf;
var param$1 = page;
return Curry._2(Format.fprintf(ppf$2, /* Format */[
/* Formatting_gen */Block.__(18, [
/* Open_box */Block.__(1, [/* Format */[
/* String_literal */Block.__(11, [
"<v>",
/* End_of_format */0
]),
"<v>"
]]),
/* Alpha */Block.__(15, [/* Formatting_lit */Block.__(17, [
/* Close_box */0,
/* End_of_format */0
])])
]),
"@[<v>%a@]"
]), (function(errs$2,subst$2){
return function (param, param$1) {
var errs$3 = errs$2;
var subst$3 = subst$2;
var ppf = param;
var ts = param$1;
var b = $$Buffer.create(1024);
var markup = function (t) {
return doc_to_plain(errs$3, subst$3, b, t);
};
var pp_tokens = function (ppf, t) {
return Cmdliner_base.pp_tokens(true, ppf, t);
};
var loop = function (_param) {
while(true) {
var param = _param;
if (param) {
var ts = param[1];
var t = param[0];
if (typeof t !== "number") {
var variant = t[0];
if (variant !== 73) {
if (variant >= 83) {
if (variant >= 4003843) {
Curry._4(Format.fprintf(ppf, /* Format */[
/* Alpha */Block.__(15, [/* Formatting_gen */Block.__(18, [
/* Open_box */Block.__(1, [/* Format */[
/* End_of_format */0,