UNPKG

bs-platform

Version:

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

619 lines (560 loc) 13.1 kB
'use strict'; var Char = require("./char.js"); var Curry = require("./curry.js"); var Caml_bytes = require("./caml_bytes.js"); var Caml_primitive = require("./caml_primitive.js"); var Caml_builtin_exceptions = require("./caml_builtin_exceptions.js"); function make(n, c) { var s = Caml_bytes.caml_create_bytes(n); Caml_bytes.caml_fill_bytes(s, 0, n, c); return s; } function init(n, f) { var s = Caml_bytes.caml_create_bytes(n); for(var i = 0; i < n; ++i){ s[i] = Curry._1(f, i); } return s; } var empty = []; function copy(s) { var len = s.length; var r = Caml_bytes.caml_create_bytes(len); Caml_bytes.caml_blit_bytes(s, 0, r, 0, len); return r; } function to_string(b) { return Caml_bytes.bytes_to_string(copy(b)); } function of_string(s) { return copy(Caml_bytes.bytes_of_string(s)); } function sub(s, ofs, len) { if (ofs < 0 || len < 0 || ofs > (s.length - len | 0)) { throw [ Caml_builtin_exceptions.invalid_argument, "String.sub / Bytes.sub" ]; } var r = Caml_bytes.caml_create_bytes(len); Caml_bytes.caml_blit_bytes(s, ofs, r, 0, len); return r; } function sub_string(b, ofs, len) { return Caml_bytes.bytes_to_string(sub(b, ofs, len)); } function $plus$plus(a, b) { var c = a + b | 0; var match = a < 0; var match$1 = b < 0; var match$2 = c < 0; if (match) { if (!match$1) { return c; } if (match$2) { return c; } throw [ Caml_builtin_exceptions.invalid_argument, "Bytes.extend" ]; } if (match$1) { return c; } if (match$2) { throw [ Caml_builtin_exceptions.invalid_argument, "Bytes.extend" ]; } return c; } function extend(s, left, right) { var len = $plus$plus($plus$plus(s.length, left), right); var r = Caml_bytes.caml_create_bytes(len); var match = left < 0 ? /* tuple */[ -left | 0, 0 ] : /* tuple */[ 0, left ]; var dstoff = match[1]; var srcoff = match[0]; var cpylen = Caml_primitive.caml_int_min(s.length - srcoff | 0, len - dstoff | 0); if (cpylen > 0) { Caml_bytes.caml_blit_bytes(s, srcoff, r, dstoff, cpylen); } return r; } function fill(s, ofs, len, c) { if (ofs < 0 || len < 0 || ofs > (s.length - len | 0)) { throw [ Caml_builtin_exceptions.invalid_argument, "String.fill / Bytes.fill" ]; } return Caml_bytes.caml_fill_bytes(s, ofs, len, c); } function blit(s1, ofs1, s2, ofs2, len) { if (len < 0 || ofs1 < 0 || ofs1 > (s1.length - len | 0) || ofs2 < 0 || ofs2 > (s2.length - len | 0)) { throw [ Caml_builtin_exceptions.invalid_argument, "Bytes.blit" ]; } return Caml_bytes.caml_blit_bytes(s1, ofs1, s2, ofs2, len); } function blit_string(s1, ofs1, s2, ofs2, len) { if (len < 0 || ofs1 < 0 || ofs1 > (s1.length - len | 0) || ofs2 < 0 || ofs2 > (s2.length - len | 0)) { throw [ Caml_builtin_exceptions.invalid_argument, "String.blit / Bytes.blit_string" ]; } return Caml_bytes.caml_blit_string(s1, ofs1, s2, ofs2, len); } function iter(f, a) { for(var i = 0 ,i_finish = a.length; i < i_finish; ++i){ Curry._1(f, a[i]); } } function iteri(f, a) { for(var i = 0 ,i_finish = a.length; i < i_finish; ++i){ Curry._2(f, i, a[i]); } } function ensure_ge(x, y) { if (x >= y) { return x; } throw [ Caml_builtin_exceptions.invalid_argument, "Bytes.concat" ]; } function sum_lengths(_acc, seplen, _param) { while(true) { var param = _param; var acc = _acc; if (!param) { return acc; } var tl = param[1]; var hd = param[0]; if (!tl) { return hd.length + acc | 0; } _param = tl; _acc = ensure_ge((hd.length + seplen | 0) + acc | 0, acc); continue ; }; } function concat(sep, l) { if (!l) { return empty; } var seplen = sep.length; var dst = Caml_bytes.caml_create_bytes(sum_lengths(0, seplen, l)); var _pos = 0; var _param = l; while(true) { var param = _param; var pos = _pos; if (!param) { return dst; } var tl = param[1]; var hd = param[0]; if (tl) { Caml_bytes.caml_blit_bytes(hd, 0, dst, pos, hd.length); Caml_bytes.caml_blit_bytes(sep, 0, dst, pos + hd.length | 0, seplen); _param = tl; _pos = (pos + hd.length | 0) + seplen | 0; continue ; } Caml_bytes.caml_blit_bytes(hd, 0, dst, pos, hd.length); return dst; }; } function cat(s1, s2) { var l1 = s1.length; var l2 = s2.length; var r = Caml_bytes.caml_create_bytes(l1 + l2 | 0); Caml_bytes.caml_blit_bytes(s1, 0, r, 0, l1); Caml_bytes.caml_blit_bytes(s2, 0, r, l1, l2); return r; } function is_space(param) { var switcher = param - 9 | 0; if (switcher > 4 || switcher < 0) { return switcher === 23; } else { return switcher !== 2; } } function trim(s) { var len = s.length; var i = 0; while(i < len && is_space(s[i])) { i = i + 1 | 0; }; var j = len - 1 | 0; while(j >= i && is_space(s[j])) { j = j - 1 | 0; }; if (j >= i) { return sub(s, i, (j - i | 0) + 1 | 0); } else { return empty; } } function escaped(s) { var n = 0; for(var i = 0 ,i_finish = s.length; i < i_finish; ++i){ var match = s[i]; var tmp; if (match >= 32) { var switcher = match - 34 | 0; tmp = switcher > 58 || switcher < 0 ? ( switcher >= 93 ? 4 : 1 ) : ( switcher > 57 || switcher < 1 ? 2 : 1 ); } else { tmp = match >= 11 ? ( match !== 13 ? 4 : 2 ) : ( match >= 8 ? 2 : 4 ); } n = n + tmp | 0; } if (n === s.length) { return copy(s); } var s$prime = Caml_bytes.caml_create_bytes(n); n = 0; for(var i$1 = 0 ,i_finish$1 = s.length; i$1 < i_finish$1; ++i$1){ var c = s[i$1]; var exit = 0; if (c >= 35) { if (c !== 92) { if (c >= 127) { exit = 1; } else { s$prime[n] = c; } } else { exit = 2; } } else if (c >= 32) { if (c >= 34) { exit = 2; } else { s$prime[n] = c; } } else if (c >= 14) { exit = 1; } else { switch (c) { case 8 : s$prime[n] = /* "\\" */92; n = n + 1 | 0; s$prime[n] = /* "b" */98; break; case 9 : s$prime[n] = /* "\\" */92; n = n + 1 | 0; s$prime[n] = /* "t" */116; break; case 10 : s$prime[n] = /* "\\" */92; n = n + 1 | 0; s$prime[n] = /* "n" */110; break; case 0 : case 1 : case 2 : case 3 : case 4 : case 5 : case 6 : case 7 : case 11 : case 12 : exit = 1; break; case 13 : s$prime[n] = /* "\\" */92; n = n + 1 | 0; s$prime[n] = /* "r" */114; break; } } switch (exit) { case 1 : s$prime[n] = /* "\\" */92; n = n + 1 | 0; s$prime[n] = 48 + (c / 100 | 0) | 0; n = n + 1 | 0; s$prime[n] = 48 + (c / 10 | 0) % 10 | 0; n = n + 1 | 0; s$prime[n] = 48 + c % 10 | 0; break; case 2 : s$prime[n] = /* "\\" */92; n = n + 1 | 0; s$prime[n] = c; break; } n = n + 1 | 0; } return s$prime; } function map(f, s) { var l = s.length; if (l === 0) { return s; } var r = Caml_bytes.caml_create_bytes(l); for(var i = 0; i < l; ++i){ r[i] = Curry._1(f, s[i]); } return r; } function mapi(f, s) { var l = s.length; if (l === 0) { return s; } var r = Caml_bytes.caml_create_bytes(l); for(var i = 0; i < l; ++i){ r[i] = Curry._2(f, i, s[i]); } return r; } function uppercase_ascii(s) { return map(Char.uppercase_ascii, s); } function lowercase_ascii(s) { return map(Char.lowercase_ascii, s); } function apply1(f, s) { if (s.length === 0) { return s; } var r = copy(s); r[0] = Curry._1(f, s[0]); return r; } function capitalize_ascii(s) { return apply1(Char.uppercase_ascii, s); } function uncapitalize_ascii(s) { return apply1(Char.lowercase_ascii, s); } function index_rec(s, lim, _i, c) { while(true) { var i = _i; if (i >= lim) { throw Caml_builtin_exceptions.not_found; } if (s[i] === c) { return i; } _i = i + 1 | 0; continue ; }; } function index(s, c) { return index_rec(s, s.length, 0, c); } function index_rec_opt(s, lim, _i, c) { while(true) { var i = _i; if (i >= lim) { return ; } if (s[i] === c) { return i; } _i = i + 1 | 0; continue ; }; } function index_opt(s, c) { return index_rec_opt(s, s.length, 0, c); } function index_from(s, i, c) { var l = s.length; if (i < 0 || i > l) { throw [ Caml_builtin_exceptions.invalid_argument, "String.index_from / Bytes.index_from" ]; } return index_rec(s, l, i, c); } function index_from_opt(s, i, c) { var l = s.length; if (i < 0 || i > l) { throw [ Caml_builtin_exceptions.invalid_argument, "String.index_from_opt / Bytes.index_from_opt" ]; } return index_rec_opt(s, l, i, c); } function rindex_rec(s, _i, c) { while(true) { var i = _i; if (i < 0) { throw Caml_builtin_exceptions.not_found; } if (s[i] === c) { return i; } _i = i - 1 | 0; continue ; }; } function rindex(s, c) { return rindex_rec(s, s.length - 1 | 0, c); } function rindex_from(s, i, c) { if (i < -1 || i >= s.length) { throw [ Caml_builtin_exceptions.invalid_argument, "String.rindex_from / Bytes.rindex_from" ]; } return rindex_rec(s, i, c); } function rindex_rec_opt(s, _i, c) { while(true) { var i = _i; if (i < 0) { return ; } if (s[i] === c) { return i; } _i = i - 1 | 0; continue ; }; } function rindex_opt(s, c) { return rindex_rec_opt(s, s.length - 1 | 0, c); } function rindex_from_opt(s, i, c) { if (i < -1 || i >= s.length) { throw [ Caml_builtin_exceptions.invalid_argument, "String.rindex_from_opt / Bytes.rindex_from_opt" ]; } return rindex_rec_opt(s, i, c); } function contains_from(s, i, c) { var l = s.length; if (i < 0 || i > l) { throw [ Caml_builtin_exceptions.invalid_argument, "String.contains_from / Bytes.contains_from" ]; } try { index_rec(s, l, i, c); return true; } catch (exn){ if (exn === Caml_builtin_exceptions.not_found) { return false; } throw exn; } } function contains(s, c) { return contains_from(s, 0, c); } function rcontains_from(s, i, c) { if (i < 0 || i >= s.length) { throw [ Caml_builtin_exceptions.invalid_argument, "String.rcontains_from / Bytes.rcontains_from" ]; } try { rindex_rec(s, i, c); return true; } catch (exn){ if (exn === Caml_builtin_exceptions.not_found) { return false; } throw exn; } } var compare = Caml_primitive.caml_bytes_compare; function uppercase(s) { return map(Char.uppercase, s); } function lowercase(s) { return map(Char.lowercase, s); } function capitalize(s) { return apply1(Char.uppercase, s); } function uncapitalize(s) { return apply1(Char.lowercase, s); } var equal = Caml_primitive.caml_bytes_equal; var unsafe_to_string = Caml_bytes.bytes_to_string; var unsafe_of_string = Caml_bytes.bytes_of_string; exports.make = make; exports.init = init; exports.empty = empty; exports.copy = copy; exports.of_string = of_string; exports.to_string = to_string; exports.sub = sub; exports.sub_string = sub_string; exports.extend = extend; exports.fill = fill; exports.blit = blit; exports.blit_string = blit_string; exports.concat = concat; exports.cat = cat; exports.iter = iter; exports.iteri = iteri; exports.map = map; exports.mapi = mapi; exports.trim = trim; exports.escaped = escaped; exports.index = index; exports.index_opt = index_opt; exports.rindex = rindex; exports.rindex_opt = rindex_opt; exports.index_from = index_from; exports.index_from_opt = index_from_opt; exports.rindex_from = rindex_from; exports.rindex_from_opt = rindex_from_opt; exports.contains = contains; exports.contains_from = contains_from; exports.rcontains_from = rcontains_from; exports.uppercase = uppercase; exports.lowercase = lowercase; exports.capitalize = capitalize; exports.uncapitalize = uncapitalize; exports.uppercase_ascii = uppercase_ascii; exports.lowercase_ascii = lowercase_ascii; exports.capitalize_ascii = capitalize_ascii; exports.uncapitalize_ascii = uncapitalize_ascii; exports.compare = compare; exports.equal = equal; exports.unsafe_to_string = unsafe_to_string; exports.unsafe_of_string = unsafe_of_string; /* No side effect */