UNPKG

bs-platform

Version:

bucklescript compiler, ocaml standard libary by bucklescript and its required runtime support

360 lines (322 loc) 9.38 kB
'use strict'; var Block = require("./block.js"); var Curry = require("./curry.js"); var $$Buffer = require("./buffer.js"); var Printf = require("./printf.js"); var Random = require("./random.js"); var $$String = require("./string.js"); var Caml_sys = require("./caml_sys.js"); var Pervasives = require("./pervasives.js"); var Caml_string = require("./caml_string.js"); var CamlinternalLazy = require("./camlinternalLazy.js"); var Caml_js_exceptions = require("./caml_js_exceptions.js"); var Caml_missing_polyfill = require("./caml_missing_polyfill.js"); var Caml_builtin_exceptions = require("./caml_builtin_exceptions.js"); function generic_basename(is_dir_sep, current_dir_name, name) { if (name === "") { return current_dir_name; } else { var _n = name.length - 1 | 0; while(true) { var n = _n; if (n < 0) { return $$String.sub(name, 0, 1); } else if (Curry._2(is_dir_sep, name, n)) { _n = n - 1 | 0; continue ; } else { var _n$1 = n; var p = n + 1 | 0; while(true) { var n$1 = _n$1; if (n$1 < 0) { return $$String.sub(name, 0, p); } else if (Curry._2(is_dir_sep, name, n$1)) { return $$String.sub(name, n$1 + 1 | 0, (p - n$1 | 0) - 1 | 0); } else { _n$1 = n$1 - 1 | 0; continue ; } }; } }; } } function generic_dirname(is_dir_sep, current_dir_name, name) { if (name === "") { return current_dir_name; } else { var _n = name.length - 1 | 0; while(true) { var n = _n; if (n < 0) { return $$String.sub(name, 0, 1); } else if (Curry._2(is_dir_sep, name, n)) { _n = n - 1 | 0; continue ; } else { var _n$1 = n; while(true) { var n$1 = _n$1; if (n$1 < 0) { return current_dir_name; } else if (Curry._2(is_dir_sep, name, n$1)) { var _n$2 = n$1; while(true) { var n$2 = _n$2; if (n$2 < 0) { return $$String.sub(name, 0, 1); } else if (Curry._2(is_dir_sep, name, n$2)) { _n$2 = n$2 - 1 | 0; continue ; } else { return $$String.sub(name, 0, n$2 + 1 | 0); } }; } else { _n$1 = n$1 - 1 | 0; continue ; } }; } }; } } var current_dir_name = "."; function is_dir_sep(s, i) { return Caml_string.get(s, i) === /* "/" */47; } function is_relative(n) { if (n.length < 1) { return true; } else { return Caml_string.get(n, 0) !== /* "/" */47; } } function is_implicit(n) { if (is_relative(n) && (n.length < 2 || $$String.sub(n, 0, 2) !== "./")) { if (n.length < 3) { return true; } else { return $$String.sub(n, 0, 3) !== "../"; } } else { return false; } } function check_suffix(name, suff) { if (name.length >= suff.length) { return $$String.sub(name, name.length - suff.length | 0, suff.length) === suff; } else { return false; } } var temp_dir_name; try { temp_dir_name = Caml_sys.caml_sys_getenv("TMPDIR"); } catch (exn){ if (exn === Caml_builtin_exceptions.not_found) { temp_dir_name = "/tmp"; } else { throw exn; } } function quote(param) { var quotequote = "'\\''"; var s = param; var l = s.length; var b = $$Buffer.create(l + 20 | 0); $$Buffer.add_char(b, /* "'" */39); for(var i = 0 ,i_finish = l - 1 | 0; i <= i_finish; ++i){ if (Caml_string.get(s, i) === /* "'" */39) { $$Buffer.add_string(b, quotequote); } else { $$Buffer.add_char(b, Caml_string.get(s, i)); } } $$Buffer.add_char(b, /* "'" */39); return $$Buffer.contents(b); } function basename(param) { return generic_basename(is_dir_sep, current_dir_name, param); } function dirname(param) { return generic_dirname(is_dir_sep, current_dir_name, param); } var temp_dir_name$1; try { temp_dir_name$1 = Caml_sys.caml_sys_getenv("TEMP"); } catch (exn$1){ if (exn$1 === Caml_builtin_exceptions.not_found) { temp_dir_name$1 = "."; } else { throw exn$1; } } var temp_dir_name$2 = temp_dir_name; var is_dir_sep$1 = is_dir_sep; var dir_sep = "/"; function concat(dirname, filename) { var l = dirname.length; if (l === 0 || Curry._2(is_dir_sep$1, dirname, l - 1 | 0)) { return dirname + filename; } else { return dirname + (dir_sep + filename); } } function chop_suffix(name, suff) { var n = name.length - suff.length | 0; if (n < 0) { throw [ Caml_builtin_exceptions.invalid_argument, "Filename.chop_suffix" ]; } else { return $$String.sub(name, 0, n); } } function chop_extension(name) { var _i = name.length - 1 | 0; while(true) { var i = _i; if (i < 0 || Curry._2(is_dir_sep$1, name, i)) { throw [ Caml_builtin_exceptions.invalid_argument, "Filename.chop_extension" ]; } else if (Caml_string.get(name, i) === /* "." */46) { return $$String.sub(name, 0, i); } else { _i = i - 1 | 0; continue ; } }; } var prng = Block.__(246, [(function (param) { return Random.State[/* make_self_init */1](/* () */0); })]); function temp_file_name(temp_dir, prefix, suffix) { var tag = prng.tag | 0; var rnd = Random.State[/* bits */3](tag === 250 ? prng[0] : ( tag === 246 ? CamlinternalLazy.force_lazy_block(prng) : prng )) & 16777215; return concat(temp_dir, Curry._3(Printf.sprintf(/* Format */[ /* String */Block.__(2, [ /* No_padding */0, /* Int */Block.__(4, [ /* Int_x */6, /* Lit_padding */Block.__(0, [ /* Zeros */2, 6 ]), /* No_precision */0, /* String */Block.__(2, [ /* No_padding */0, /* End_of_format */0 ]) ]) ]), "%s%06x%s" ]), prefix, rnd, suffix)); } var current_temp_dir_name = /* record */[/* contents */temp_dir_name$2]; function set_temp_dir_name(s) { current_temp_dir_name[0] = s; return /* () */0; } function get_temp_dir_name(param) { return current_temp_dir_name[0]; } function temp_file($staropt$star, prefix, suffix) { var temp_dir = $staropt$star !== undefined ? $staropt$star : current_temp_dir_name[0]; var _counter = 0; while(true) { var counter = _counter; var name = temp_file_name(temp_dir, prefix, suffix); try { Caml_missing_polyfill.not_implemented("caml_sys_close"); return name; } catch (raw_e){ var e = Caml_js_exceptions.internalToOCamlException(raw_e); if (e[0] === Caml_builtin_exceptions.sys_error) { if (counter >= 1000) { throw e; } else { _counter = counter + 1 | 0; continue ; } } else { throw e; } } }; } function open_temp_file($staropt$star, $staropt$star$1, prefix, suffix) { var mode = $staropt$star !== undefined ? $staropt$star : /* :: */[ /* Open_text */7, /* [] */0 ]; var temp_dir = $staropt$star$1 !== undefined ? $staropt$star$1 : current_temp_dir_name[0]; var _counter = 0; while(true) { var counter = _counter; var name = temp_file_name(temp_dir, prefix, suffix); try { return /* tuple */[ name, Pervasives.open_out_gen(/* :: */[ /* Open_wronly */1, /* :: */[ /* Open_creat */3, /* :: */[ /* Open_excl */5, mode ] ] ], 384, name) ]; } catch (raw_e){ var e = Caml_js_exceptions.internalToOCamlException(raw_e); if (e[0] === Caml_builtin_exceptions.sys_error) { if (counter >= 1000) { throw e; } else { _counter = counter + 1 | 0; continue ; } } else { throw e; } } }; } var current_dir_name$1 = current_dir_name; var parent_dir_name = ".."; var is_relative$1 = is_relative; var is_implicit$1 = is_implicit; var check_suffix$1 = check_suffix; var basename$1 = basename; var dirname$1 = dirname; var quote$1 = quote; exports.current_dir_name = current_dir_name$1; exports.parent_dir_name = parent_dir_name; exports.dir_sep = dir_sep; exports.concat = concat; exports.is_relative = is_relative$1; exports.is_implicit = is_implicit$1; exports.check_suffix = check_suffix$1; exports.chop_suffix = chop_suffix; exports.chop_extension = chop_extension; exports.basename = basename$1; exports.dirname = dirname$1; exports.temp_file = temp_file; exports.open_temp_file = open_temp_file; exports.get_temp_dir_name = get_temp_dir_name; exports.set_temp_dir_name = set_temp_dir_name; exports.temp_dir_name = temp_dir_name$2; exports.quote = quote$1; /* match Not a pure module */