@fink/loxia
Version:
A fink to JavaScript compiler.
247 lines (208 loc) • 7.36 kB
JavaScript
const {
lower_case: lower_case_0
} = require("@fink/std-lib/str.js");
const {
add: add_0
} = require("../context.js");
const {
any: any_0
} = require("../context.js");
const {
ir_fn: ir_fn_0
} = require("../context.js");
const {
transform: transform_0
} = require("../transform.js");
const {
lst: lst_0
} = require("../literals/list.js");
const {
lst_a: lst_a_0
} = require("../literals/list.js");
const {
rec_e: rec_e_0
} = require("../literals/record.js");
const {
rec_s: rec_s_0
} = require("../literals/record.js");
const {
rec_m: rec_m_0
} = require("../literals/record.js");
const {
str: str_6
} = require("../literals/string.js");
const jxe_0 = (name_id_0, props_id_0, chldrn_id_0, name_or_id_0, drec_0, ctx_0) => {
const result_0 = ir_fn_0(`jxe`, [name_id_0, props_id_0, chldrn_id_0], name_or_id_0, {
loc: drec_0.loc
}, ctx_0);
return result_0;
};
const jxf_0 = (children_id_0, name_or_id_1, drec_1, ctx_1) => {
const result_1 = ir_fn_0(`jxf`, [children_id_0], name_or_id_1, {
loc: drec_1.loc
}, ctx_1);
return result_1;
};
const transform_prop_name_0 = (expr_0, ctx_2) => {
const result_2 = str_6(expr_0.value, `prpn`, expr_0, ctx_2);
return result_2;
};
const transform_prop_val_0 = (expr_1, ctx_3) => {
/* istanbul ignore else */
if (null != expr_1) {
const itm_0 = expr_1.name;
/* istanbul ignore else */
if (null != itm_0) {
/* istanbul ignore else */
if (itm_0.type === `ident`) {
/* istanbul ignore else */
if (expr_1.value === false) {
const result_5 = transform_0(expr_1.name, `prpv`, ctx_3);
return result_5;
}
}
}
}
const result_4 = transform_0(expr_1.value, `prpv`, ctx_3);
return result_4;
};
const transform_prop_0 = (expr_2, rec_id_0, ctx_4) => {
/* istanbul ignore else */
if (null != expr_2) {
/* istanbul ignore else */
if (expr_2.type === `spread`) {
const dlst_3 = transform_0(expr_2.right, `sprd`, ctx_4);
const dlst_4 = rec_m_0(rec_id_0, dlst_3[1], `props`, expr_2, dlst_3[2]);
return [[...dlst_3[0], ...dlst_4[0]], dlst_4[1], dlst_4[2]];
}
}
const dlst_0 = transform_prop_name_0(expr_2.name, ctx_4);
const dlst_1 = transform_prop_val_0(expr_2, dlst_0[2]);
const dlst_2 = rec_s_0(rec_id_0, dlst_0[1], dlst_1[1], `props`, expr_2, dlst_1[2]);
return [[...dlst_0[0], ...dlst_1[0], ...dlst_2[0]], dlst_2[1], dlst_2[2]];
};
const transform_all_props_0 = (...args_5) => {
transform_all_props_0: do {
const dlst_5 = args_5[0];
const hdm_0 = dlst_5[0];
const expr_3 = undefined === hdm_0 ? false : hdm_0;
const rec_id_1 = args_5[1];
const ctx_5 = args_5[2];
const hdm_1 = args_5[3];
const out_0 = undefined === hdm_1 ? [] : hdm_1;
/* istanbul ignore else */
if (expr_3 === false) {
return [out_0, rec_id_1, ctx_5];
}
const dlst_6 = transform_prop_0(expr_3, rec_id_1, ctx_5);
args_5 = [dlst_5.slice(1), dlst_6[1], dlst_6[2], [...out_0, ...dlst_6[0]]];
continue transform_all_props_0;
} while (true);
};
const transform_props_0 = (drec_2, ctx_6) => {
const dlst_7 = rec_e_0(`props`, {
loc: drec_2.loc
}, ctx_6);
const dlst_8 = transform_all_props_0(drec_2.props, dlst_7[1], dlst_7[2]);
return [[...dlst_7[0], ...dlst_8[0]], dlst_8[1], dlst_8[2]];
};
const transform_child_0 = (expr_4, lst_id_0, ctx_7) => {
const dlst_9 = transform_0(expr_4, `chld`, ctx_7);
const dlst_10 = lst_a_0(lst_id_0, dlst_9[1], `chldrn`, expr_4, dlst_9[2]);
return [[...dlst_9[0], ...dlst_10[0]], dlst_10[1], dlst_10[2]];
};
const transform_all_children_0 = (...args_8) => {
transform_all_children_0: do {
const dlst_11 = args_8[0];
const hdm_2 = dlst_11[0];
const expr_5 = undefined === hdm_2 ? false : hdm_2;
const lst_id_1 = args_8[1];
const ctx_8 = args_8[2];
const hdm_3 = args_8[3];
const out_2 = undefined === hdm_3 ? [] : hdm_3;
/* istanbul ignore else */
if (expr_5 === false) {
return [out_2, lst_id_1, ctx_8];
}
const dlst_12 = transform_child_0(expr_5, lst_id_1, ctx_8);
args_8 = [dlst_11.slice(1), dlst_12[1], dlst_12[2], [...out_2, ...dlst_12[0]]];
continue transform_all_children_0;
} while (true);
};
const transform_children_0 = (drec_3, ctx_9) => {
const dlst_13 = lst_0(`chldrn`, {
loc: drec_3.loc
}, ctx_9);
const dlst_14 = transform_all_children_0(drec_3.children, dlst_13[1], dlst_13[2]);
return [[...dlst_13[0], ...dlst_14[0]], dlst_14[1], dlst_14[2]];
};
const first_is_lower_0 = dlst_15 => {
const s_0 = dlst_15[0];
const value_4 = lower_case_0(s_0);
/* istanbul ignore else */
if (value_4 === s_0) {
return true;
}
return false;
};
const transform_elem_ident_0 = (expr_6, ctx_10) => {
/* istanbul ignore else */
if (null != expr_6) {
const val_12 = first_is_lower_0(expr_6.value);
/* istanbul ignore else */
if (true === val_12) {
const result_36 = str_6(expr_6.value, `jsxi`, expr_6, ctx_10);
return result_36;
}
}
const result_35 = transform_0(expr_6, `jsxi`, ctx_10);
return result_35;
};
const transform_jsx_elem_0 = (node_0, res_id_0, ctx_11) => {
const dlst_16 = transform_elem_ident_0(node_0.name, ctx_11);
const dlst_17 = transform_props_0(node_0, dlst_16[2]);
const dlst_18 = transform_children_0(node_0, dlst_17[2]);
const dlst_19 = jxe_0(dlst_16[1], dlst_17[1], dlst_18[1], res_id_0, node_0, dlst_18[2]);
return [[...dlst_16[0], ...dlst_17[0], ...dlst_18[0], ...dlst_19[0]], dlst_19[2]];
};
const transform_jsx_frag_0 = (node_1, res_id_1, ctx_12) => {
const dlst_20 = transform_children_0(node_1, ctx_12);
const dlst_21 = jxf_0(dlst_20[1], res_id_1, node_1, dlst_20[2]);
return [[...dlst_20[0], ...dlst_21[0]], dlst_21[2]];
};
const transform_jsx_text_0 = (node_2, res_id_2, ctx_13) => {
const dlst_22 = str_6(node_2.value, res_id_2, node_2, ctx_13);
return [dlst_22[0], dlst_22[2]];
};
const transform_jsx_expr_container_0 = (node_3, res_id_3, ctx_14) => {
const dlst_23 = transform_0(node_3.expr, res_id_3, ctx_14);
return [dlst_23[0], dlst_23[2]];
};
const add_jsx_0 = ctx_15 => {
const pfn_0 = add_0(`jsx:frag`, any_0, transform_jsx_frag_0);
const ppr_0 = pfn_0(ctx_15);
const pfn_1 = add_0(`jsx:elem`, any_0, transform_jsx_elem_0);
const ppr_1 = pfn_1(ppr_0);
const pfn_2 = add_0(`jsx:text`, any_0, transform_jsx_text_0);
const ppr_2 = pfn_2(ppr_1);
const pfn_3 = add_0(`jsx:expr`, any_0, transform_jsx_expr_container_0);
const ppr_3 = pfn_3(ppr_2);
return ppr_3;
};
exports.jxe = jxe_0;
exports.jxf = jxf_0;
exports.transform_prop_name = transform_prop_name_0;
exports.transform_prop_val = transform_prop_val_0;
exports.transform_prop = transform_prop_0;
exports.transform_all_props = transform_all_props_0;
exports.transform_props = transform_props_0;
exports.transform_child = transform_child_0;
exports.transform_all_children = transform_all_children_0;
exports.transform_children = transform_children_0;
exports.first_is_lower = first_is_lower_0;
exports.transform_elem_ident = transform_elem_ident_0;
exports.transform_jsx_elem = transform_jsx_elem_0;
exports.transform_jsx_frag = transform_jsx_frag_0;
exports.transform_jsx_text = transform_jsx_text_0;
exports.transform_jsx_expr_container = transform_jsx_expr_container_0;
exports.add_jsx = add_jsx_0;