UNPKG

@elliottcable/bs-cmdliner

Version:

Cmdliner — Declarative definition of command line interfaces for OCaml

1,329 lines (1,285 loc) 65.8 kB
'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,