UNPKG

@fink/loxia

Version:

A fink to JavaScript compiler.

100 lines (84 loc) 2.82 kB
const types_0 = require("@babel/types"); const templateLiteral_0 = types_0.templateLiteral; const { rx: rx_0 } = require("@fink/std-lib/regex.js"); const { replace_all: replace_all_0 } = require("@fink/std-lib/regex.js"); const { add: add_0 } = require("../context.js"); const { get_js: get_js_0 } = require("../context.js"); const { set_js2: set_js2_0 } = require("../context.js"); const transform_str_0 = (expr_0, ctx_0) => { const drec_1 = expr_0[0]; const raw_0 = replace_all_0(drec_1.args[0], rx_0`\\([\s\S])|([\`])`, `\\$1$2`); const sprd_0 = types_0.templateElement({ raw: raw_0 }); const js_0 = templateLiteral_0([{ ...sprd_0, loc: drec_1.loc }], []); const result_3 = set_js2_0(expr_0, js_0, ctx_0); return result_3; }; const split_exprs_0 = (...args_1) => { split_exprs_0: do { const dlst_1 = args_1[0]; const hdm_0 = dlst_1[0]; const part_0 = undefined === hdm_0 ? false : hdm_0; const tail_5 = dlst_1.slice(1); const ctx_1 = args_1[1]; const hdm_1 = args_1[2]; const hdm_2 = args_1[3]; const quasis_0 = undefined === hdm_2 ? [] : hdm_2; const hdm_3 = args_1[4]; const exprs_0 = undefined === hdm_3 ? [] : hdm_3; /* istanbul ignore else */ if (part_0 === false) { return [quasis_0, exprs_0]; } const js_1 = get_js_0(part_0, ctx_1); /* istanbul ignore else */ if (true === (undefined === hdm_1 ? true : hdm_1)) { args_1 = [tail_5, ctx_1, false, [...quasis_0, js_1.quasis[0]], exprs_0]; continue split_exprs_0; } args_1 = [tail_5, ctx_1, true, quasis_0, [...exprs_0, js_1]]; continue split_exprs_0; } while (true); }; const transform_template_0 = (expr_1, ctx_2) => { const dlst_4 = split_exprs_0(expr_1[0].args, ctx_2); const js_2 = templateLiteral_0(dlst_4[0], dlst_4[1]); const result_14 = set_js2_0(expr_1, js_2, ctx_2); return result_14; }; const transform_tagged_template_0 = (expr_2, ctx_3) => { const val_5 = expr_2[0].args; const tag_1 = get_js_0(val_5[0], ctx_3); const dlst_6 = split_exprs_0(val_5.slice(1), ctx_3); const tl_0 = templateLiteral_0(dlst_6[0], dlst_6[1]); const js_3 = types_0.taggedTemplateExpression(tag_1, tl_0); const result_20 = set_js2_0(expr_2, js_3, ctx_3); return result_20; }; const add_string_0 = ctx_4 => { const pfn_0 = add_0(`str`, transform_str_0); const ppr_0 = pfn_0(ctx_4); const pfn_1 = add_0(`strt`, transform_template_0); const ppr_1 = pfn_1(ppr_0); const pfn_2 = add_0(`strtt`, transform_tagged_template_0); const ppr_2 = pfn_2(ppr_1); return ppr_2; }; exports.transform_str = transform_str_0; exports.split_exprs = split_exprs_0; exports.transform_template = transform_template_0; exports.transform_tagged_template = transform_tagged_template_0; exports.add_string = add_string_0;