UNPKG

@softwarefactory-project/re-ansi

Version:
1,134 lines (1,128 loc) 24.1 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); // node_modules/rescript/lib/es6/caml_option.js function some(x) { if (x === void 0) { return { BS_PRIVATE_NESTED_SOME_NONE: 0 }; } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) { return { BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0 }; } else { return x; } } __name(some, "some"); function nullable_to_opt(x) { if (x == null) { return; } else { return some(x); } } __name(nullable_to_opt, "nullable_to_opt"); function valFromOption(x) { if (!(x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0)) { return x; } var depth = x.BS_PRIVATE_NESTED_SOME_NONE; if (depth === 0) { return; } else { return { BS_PRIVATE_NESTED_SOME_NONE: depth - 1 | 0 }; } } __name(valFromOption, "valFromOption"); // node_modules/rescript/lib/es6/js_string.js function codePointAt(arg1, obj) { return obj.codePointAt(arg1); } __name(codePointAt, "codePointAt"); function slice(from, to_, obj) { return obj.slice(from, to_); } __name(slice, "slice"); function sliceToEnd(from, obj) { return obj.slice(from); } __name(sliceToEnd, "sliceToEnd"); // node_modules/@rescript/core/src/Core__List.res.mjs function add(xs, x) { return { hd: x, tl: xs }; } __name(add, "add"); function copyAuxCont(_cellX, _prec) { while (true) { var prec = _prec; var cellX = _cellX; if (!cellX) { return prec; } var next = { hd: cellX.hd, tl: ( /* [] */ 0 ) }; prec.tl = next; _prec = next; _cellX = cellX.tl; continue; } ; } __name(copyAuxCont, "copyAuxCont"); function length(xs) { var _x = xs; var _acc = 0; while (true) { var acc = _acc; var x = _x; if (!x) { return acc; } _acc = acc + 1 | 0; _x = x.tl; continue; } ; } __name(length, "length"); function fillAux(arr, _i, _x) { while (true) { var x = _x; var i = _i; if (!x) { return; } arr[i] = x.hd; _x = x.tl; _i = i + 1 | 0; continue; } ; } __name(fillAux, "fillAux"); function toArray(x) { var len = length(x); var arr = new Array(len); fillAux(arr, 0, x); return arr; } __name(toArray, "toArray"); function reverseConcat(_l1, _l2) { while (true) { var l2 = _l2; var l1 = _l1; if (!l1) { return l2; } _l2 = { hd: l1.hd, tl: l2 }; _l1 = l1.tl; continue; } ; } __name(reverseConcat, "reverseConcat"); function reverse(l) { return reverseConcat( l, /* [] */ 0 ); } __name(reverse, "reverse"); function flatAux(_prec, _xs) { while (true) { var xs = _xs; var prec = _prec; if (xs) { _xs = xs.tl; _prec = copyAuxCont(xs.hd, prec); continue; } prec.tl = /* [] */ 0; return; } ; } __name(flatAux, "flatAux"); function flat(_xs) { while (true) { var xs = _xs; if (!xs) { return ( /* [] */ 0 ); } var match = xs.hd; if (match) { var cell = { hd: match.hd, tl: ( /* [] */ 0 ) }; flatAux(copyAuxCont(match.tl, cell), xs.tl); return cell; } _xs = xs.tl; continue; } ; } __name(flat, "flat"); // node_modules/@rescript/core/src/Core__Option.res.mjs function flatMap(opt, f) { if (opt !== void 0) { return f(valFromOption(opt)); } } __name(flatMap, "flatMap"); function getOr(opt, $$default2) { if (opt !== void 0) { return valFromOption(opt); } else { return $$default2; } } __name(getOr, "getOr"); // src/Ansi.res.mjs import * as JsxRuntime from "react/jsx-runtime"; function fourBitColors(code) { switch (code) { case 0: return "black"; case 1: return "red"; case 2: return "green"; case 3: return "yellow"; case 4: return "blue"; case 5: return "magenta"; case 6: return "cyan"; case 9: return "initial"; case 10: return "grey"; case 11: return "#DA2647"; case 12: return "#87FF2A"; case 13: return "#FFF700"; case 14: return "#5DADEC"; case 15: return "#FF3399"; case 16: return "#8DD9CC"; case 7: case 17: return "white"; default: console.log("Unknown color value:", code); return; } } __name(fourBitColors, "fourBitColors"); function threeBitColors(code) { switch (code) { case 0: return "grey"; case 1: return "red"; case 2: return "green"; case 3: return "yellow"; case 4: return "blue"; case 5: return "magenta"; case 6: return "cyan"; case 7: return "white"; default: console.log("Unknown color value:", code); return; } } __name(threeBitColors, "threeBitColors"); function combine(css1, css2) { return Object.assign({}, css1, css2); } __name(combine, "combine"); function addWeight(fontWeight) { return { fontWeight }; } __name(addWeight, "addWeight"); function addStyle(fontStyle) { return { fontStyle }; } __name(addStyle, "addStyle"); function addDecoration(textDecoration) { return { textDecoration }; } __name(addDecoration, "addDecoration"); function int_of_cp(c) { return c - 48 | 0; } __name(int_of_cp, "int_of_cp"); function getColorStyle(colorMode, colorValue) { switch (colorMode) { case 3: return { TAG: "Foreground", _0: colorValue }; case 0: case 4: return { TAG: "Background", _0: colorValue }; case 9: return { TAG: "BrightForeground", _0: colorValue }; default: } console.log("Unknown color code:", colorMode, colorValue); } __name(getColorStyle, "getColorStyle"); function getColorStyleCss(color) { switch (color.TAG) { case "Foreground": return flatMap(fourBitColors(color._0), function(color2) { return { color: color2 }; }); case "BrightForeground": return flatMap(threeBitColors(color._0), function(color2) { return { color: color2, fontWeight: "bold" }; }); case "Background": return flatMap(fourBitColors(color._0), function(background) { return { background }; }); } } __name(getColorStyleCss, "getColorStyleCss"); function get(colorMode, colorValue) { return flatMap(getColorStyle(colorMode - 48 | 0, colorValue - 48 | 0), getColorStyleCss); } __name(get, "get"); var ColorCss = { getColorStyle, getColorStyleCss, get }; function getFontStyle(fontMode) { switch (fontMode) { case 1: return { TAG: "FontStyle", _0: addWeight("bold") }; case 2: return { TAG: "FontStyle", _0: addWeight("lighter") }; case 3: return { TAG: "FontStyle", _0: addStyle("italic") }; case 4: return { TAG: "FontStyle", _0: addDecoration("underline") }; case 0: case 7: return "Regular"; case 9: return { TAG: "FontStyle", _0: addDecoration("line-through") }; default: return; } } __name(getFontStyle, "getFontStyle"); function getFontStyleCss(font) { if (typeof font !== "object") { return; } else { return font._0; } } __name(getFontStyleCss, "getFontStyleCss"); function get$1(fontMode) { return flatMap(getFontStyle(fontMode - 48 | 0), getFontStyleCss); } __name(get$1, "get$1"); var FontCss = { getFontStyle, getFontStyleCss, get: get$1 }; var linkRe = new RegExp("^(http(s)?:\\/\\/[^\\s]+)"); function get$2(txt) { return getOr(flatMap(nullable_to_opt(linkRe.exec(txt)), function(res) { return flatMap(res[0], function(url) { return [ url.length, { TAG: "HRef", _0: url } ]; }); }), [ 1, void 0 ]); } __name(get$2, "get$2"); var HttpLink = { linkRe, get: get$2 }; function parse(txt, pos) { var match = codePointAt(pos, txt); var exit = 0; if (match === void 0) { return [ 0, void 0 ]; } if (match >= 14) { if (match !== 27) { if (match !== 104) { return [ 0, void 0 ]; } else { return get$2(slice(pos, 512, txt)); } } exit = 1; } else { if (match === 10) { return [ 1, "CarriageReturn" ]; } if (match < 13) { return [ 0, void 0 ]; } exit = 1; } if (exit === 1) { var codePoints = []; var readCodePoints = /* @__PURE__ */ __name(function(_idx) { while (true) { var idx = _idx; var match2 = idx > 10; var match$110 = codePointAt(pos + idx | 0, txt); if (match2) { return; } if (match$110 === void 0) { return; } if (match$110 === 109) { return; } codePoints.push(match$110); _idx = idx + 1 | 0; continue; } ; }, "readCodePoints"); readCodePoints(1); var length2 = codePoints.length + 2 | 0; var exit$1 = 0; var colorMode; var colorValue; var xs; var colorMode$1; var colorValue$1; var style; var style$1; var cm1; var cv1; var cm2; var cv2; var xs$1; if (codePoints[0] === 10 && codePoints[1] === 27 && codePoints[2] === 91 && codePoints[3] === 49 && codePoints[4] === 65 && codePoints[5] === 27 && codePoints[6] === 91 && codePoints[7] === 74) { return [ 9, "EraseLine" ]; } if (codePoints[0] === 91 && codePoints[2] === 75) { return [ 4, "EraseLine" ]; } if (codePoints[0] === 91 && codePoints[1] === 75) { return [ 3, "EraseLine" ]; } var len = codePoints.length; if (len >= 11) { return [ 1, void 0 ]; } switch (len) { case 1: var match$1 = codePoints[0]; if (match$1 !== 91) { return [ 1, void 0 ]; } else { return [ length2, "Clear" ]; } case 2: var match$2 = codePoints[0]; if (match$2 !== 91) { return [ 1, void 0 ]; } var style$2 = codePoints[1]; if (style$2 !== 48) { return [ length2, flatMap(get$1(style$2), function(style2) { return { TAG: "Style", _0: style2 }; }) ]; } else { return [ length2, "Clear" ]; } case 3: var match$3 = codePoints[0]; if (match$3 !== 91) { return [ 1, void 0 ]; } var colorMode$2 = codePoints[1]; var exit$2 = 0; if (colorMode$2 !== 48) { exit$2 = 5; } else { var match$4 = codePoints[2]; if (match$4 === 48) { return [ length2, "Clear" ]; } exit$2 = 5; } if (exit$2 === 5) { var colorValue$2 = codePoints[2]; colorMode = colorMode$2; colorValue = colorValue$2; xs = codePoints; exit$1 = 2; } break; case 4: var match$5 = codePoints[0]; if (match$5 !== 91) { return [ 1, void 0 ]; } var match$6 = codePoints[1]; if (match$6 !== 49) { return [ 1, void 0 ]; } var colorMode$3 = codePoints[2]; var colorValue$3 = codePoints[3]; colorMode = colorMode$3; colorValue = colorValue$3; xs = codePoints; exit$1 = 2; break; case 5: var match$7 = codePoints[0]; if (match$7 !== 91) { return [ 1, void 0 ]; } var colorMode$4 = codePoints[1]; var colorValue$4 = codePoints[2]; var match$8 = codePoints[3]; if (match$8 !== 59) { if (colorValue$4 !== 59) { return [ 1, void 0 ]; } var colorMode$5 = codePoints[3]; var colorValue$5 = codePoints[4]; colorMode$1 = colorMode$5; colorValue$1 = colorValue$5; style = colorMode$4; exit$1 = 3; } else { var style$3 = codePoints[4]; colorMode$1 = colorMode$4; colorValue$1 = colorValue$4; style = style$3; exit$1 = 3; } break; case 6: var match$9 = codePoints[0]; if (match$9 !== 91) { return [ 1, void 0 ]; } var match$10 = codePoints[1]; if (match$10 !== 48) { return [ 1, void 0 ]; } var style$4 = codePoints[2]; var match$11 = codePoints[3]; if (match$11 !== 59) { return [ 1, void 0 ]; } var colorMode$6 = codePoints[4]; var colorValue$6 = codePoints[5]; colorMode$1 = colorMode$6; colorValue$1 = colorValue$6; style = style$4; exit$1 = 3; break; case 0: case 7: return [ 1, void 0 ]; case 8: var match$12 = codePoints[0]; if (match$12 !== 91) { return [ 1, void 0 ]; } var style$5 = codePoints[1]; var match$13 = codePoints[2]; if (match$13 !== 59) { return [ 1, void 0 ]; } var cm1$1 = codePoints[3]; var cv1$1 = codePoints[4]; var match$14 = codePoints[5]; if (match$14 !== 59) { return [ 1, void 0 ]; } var cm2$1 = codePoints[6]; var cv2$1 = codePoints[7]; style$1 = style$5; cm1 = cm1$1; cv1 = cv1$1; cm2 = cm2$1; cv2 = cv2$1; xs$1 = codePoints; exit$1 = 4; break; case 9: var match$15 = codePoints[0]; if (match$15 !== 91) { return [ 1, void 0 ]; } var style$6 = codePoints[1]; var exit$3 = 0; if (style$6 !== 48) { exit$3 = 5; } else { var style$7 = codePoints[2]; var match$16 = codePoints[3]; if (match$16 !== 59) { exit$3 = 5; } else { var cm1$2 = codePoints[4]; var cv1$2 = codePoints[5]; var match$17 = codePoints[6]; if (match$17 !== 59) { exit$3 = 5; } else { var cm2$2 = codePoints[7]; var cv2$2 = codePoints[8]; style$1 = style$7; cm1 = cm1$2; cv1 = cv1$2; cm2 = cm2$2; cv2 = cv2$2; xs$1 = codePoints; exit$1 = 4; } } } if (exit$3 === 5) { var match$18 = codePoints[2]; if (match$18 !== 59) { return [ 1, void 0 ]; } var cm1$3 = codePoints[3]; var cv1$3 = codePoints[4]; var match$19 = codePoints[5]; if (match$19 !== 59) { return [ 1, void 0 ]; } var match$20 = codePoints[6]; if (match$20 !== 49) { return [ 1, void 0 ]; } var cm2$3 = codePoints[7]; var cv2$3 = codePoints[8]; style$1 = style$6; cm1 = cm1$3; cv1 = cv1$3; cm2 = cm2$3; cv2 = cv2$3; xs$1 = codePoints; exit$1 = 4; } break; case 10: var match$21 = codePoints[0]; if (match$21 !== 91) { return [ 1, void 0 ]; } var match$22 = codePoints[1]; if (match$22 !== 48) { return [ 1, void 0 ]; } var style$8 = codePoints[2]; var match$23 = codePoints[3]; if (match$23 !== 59) { return [ 1, void 0 ]; } var cm1$4 = codePoints[4]; var cv1$4 = codePoints[5]; var match$24 = codePoints[6]; if (match$24 !== 59) { return [ 1, void 0 ]; } var match$25 = codePoints[7]; if (match$25 !== 49) { return [ 1, void 0 ]; } var cm2$4 = codePoints[8]; var cv2$4 = codePoints[9]; style$1 = style$8; cm1 = cm1$4; cv1 = cv1$4; cm2 = cm2$4; cv2 = cv2$4; xs$1 = codePoints; exit$1 = 4; break; } switch (exit$1) { case 2: return [ length2, flatMap(get(colorMode, colorValue + (xs.length === 4 ? 10 : 0) | 0), function(colorCss) { return { TAG: "Style", _0: colorCss }; }) ]; case 3: return [ length2, flatMap(get(colorMode$1, colorValue$1), function(colorCss) { var fontCss = get$1(style); if (fontCss !== void 0) { return { TAG: "Style", _0: Object.assign({}, colorCss, fontCss) }; } else { return { TAG: "Style", _0: colorCss }; } }) ]; case 4: return [ length2, flatMap(get(cm1, cv1), function(colorCss1) { return flatMap(get(cm2, cv2 + (xs$1.length === 9 ? 10 : 0) | 0), function(colorCss2) { var css = Object.assign({}, colorCss1, colorCss2); var fontCss = get$1(style$1); if (fontCss !== void 0) { return { TAG: "Style", _0: Object.assign({}, css, fontCss) }; } else { return { TAG: "Style", _0: css }; } }); }) ]; } } } __name(parse, "parse"); var AnsiCode = { fourBitColors, threeBitColors, combine, addWeight, addStyle, addDecoration, int_of_cp, ColorCss, FontCss, HttpLink, parse }; function text(txt, from, to_) { return { TAG: "Text", _0: slice(from, to_, txt) }; } __name(text, "text"); function parse$1(txt, length2, pos) { var go = /* @__PURE__ */ __name(function(_pos, _prev) { while (true) { var prev = _prev; var pos2 = _pos; var match = pos2 === length2; var match$1 = parse(txt, pos2); if (match) { return [ pos2, { hd: text(txt, prev, pos2), tl: ( /* [] */ 0 ) } ]; } var code = match$1[1]; if (code !== void 0) { var prevElem = text(txt, prev, pos2); var pos$1 = pos2 + match$1[0] | 0; if (typeof code !== "object") { switch (code) { case "Clear": return [ pos$1, { hd: prevElem, tl: ( /* [] */ 0 ) } ]; case "EraseLine": _prev = pos$1; _pos = pos$1; continue; case "CarriageReturn": return [ pos$1, { hd: prevElem, tl: { hd: "LineBreak", tl: ( /* [] */ 0 ) } } ]; } } else { if (code.TAG === "HRef") { return [ pos$1, { hd: prevElem, tl: { hd: { TAG: "Link", _0: code._0 }, tl: ( /* [] */ 0 ) } } ]; } var match$2 = go(pos$1, pos$1); var styled = match$2[1]; if (styled !== void 0) { return [ match$2[0], { hd: prevElem, tl: { hd: { TAG: "DocStyle", _0: code._0, _1: styled }, tl: ( /* [] */ 0 ) } } ]; } else { return [ pos$1, void 0 ]; } } } else { _pos = pos2 + 1 | 0; continue; } } ; }, "go"); return go(pos, pos); } __name(parse$1, "parse$1"); var $$Document = { text, parse: parse$1 }; function parse$2(txt) { var go = /* @__PURE__ */ __name(function(_txt, _acc) { while (true) { var acc = _acc; var txt2 = _txt; var length2 = txt2.length; var match = parse$1(txt2, length2, 0); var doc = match[1]; var pos = match[0]; if (doc === void 0) { return acc; } if (pos === length2) { return add(acc, doc); } _acc = add(acc, doc); _txt = sliceToEnd(pos, txt2); continue; } ; }, "go"); return flat(reverse(go( txt, /* [] */ 0 ))); } __name(parse$2, "parse$2"); function render(doc) { var go = /* @__PURE__ */ __name(function(_xs, _idx, _acc) { while (true) { var acc = _acc; var idx = _idx; var xs = _xs; if (!xs) { return toArray(reverse(acc)); } var txt = xs.hd; if (typeof txt !== "object") { _acc = add(acc, JsxRuntime.jsx("br", {}, String(idx))); _idx = idx + 1 | 0; _xs = xs.tl; continue; } switch (txt.TAG) { case "Text": _acc = add(acc, txt._0); _idx = idx + 1 | 0; _xs = xs.tl; continue; case "Link": var href = txt._0; _acc = add(acc, JsxRuntime.jsx("a", { children: href, href }, String(idx))); _idx = idx + 1 | 0; _xs = xs.tl; continue; case "DocStyle": _acc = add(acc, JsxRuntime.jsx("span", { children: go( txt._1, 0, /* [] */ 0 ), style: txt._0 }, String(idx))); _idx = idx + 1 | 0; _xs = xs.tl; continue; } } ; }, "go"); return go( doc, 0, /* [] */ 0 ); } __name(render, "render"); function Ansi(props) { return JsxRuntime.jsx("div", { children: render(parse$2(props.log)) }); } __name(Ansi, "Ansi"); var make = Ansi; var $$default = Ansi; export { $$Document, AnsiCode, $$default as default, make, parse$2 as parse, render };