@fink/loxia
Version:
A fink to JavaScript compiler.
146 lines (123 loc) • 3.67 kB
JavaScript
const {
ir_fn: ir_fn_0
} = require("../context.js");
const {
transform: transform_0
} = require("../transform.js");
const {
bind: bind_0
} = require("../identifier/init.js");
const {
str: str_4
} = require("../literals/string.js");
const impd_0 = (uri_id_0, res_id_0, drec_0, ctx_0) => {
const result_0 = ir_fn_0(`impd`, [uri_id_0], res_id_0, {
loc: drec_0.loc
}, ctx_0);
return result_0;
};
const imp_0 = (uri_id_1, key_id_0, res_id_1, drec_1, ctx_1) => {
const loc_1 = drec_1.loc;
/* istanbul ignore else */
if (key_id_0 === false) {
const result_3 = ir_fn_0(`imp`, [uri_id_1], res_id_1, {
loc: loc_1
}, ctx_1);
return result_3;
}
const result_2 = ir_fn_0(`imp`, [uri_id_1, key_id_0], res_id_1, {
loc: loc_1
}, ctx_1);
return result_2;
};
const get_key_val_0 = (expr_0, ctx_2) => {
let ret_3;
ret_3: {
/* istanbul ignore else */
if (null != expr_0) {
/* istanbul ignore else */
if (expr_0.right === false) {
const result_6 = bind_0(expr_0.left, ctx_2);
ret_3 = result_6;
/* istanbul ignore next */
break ret_3;
}
}
/* istanbul ignore else */
if (null != expr_0) {
const itm_0 = expr_0.right;
/* istanbul ignore else */
if (null != itm_0) {
/* istanbul ignore else */
if (itm_0.type === `ident`) {
const result_5 = bind_0(expr_0.right, ctx_2);
ret_3 = result_5;
/* istanbul ignore next */
break ret_3;
}
}
}
}
const dlst_0 = ret_3;
const dlst_1 = str_4(expr_0.left.value, `key`, expr_0.left, dlst_0[1]);
return [dlst_1[0], dlst_1[1], dlst_0[0], dlst_1[2]];
};
const transform_imp_rec_0 = (...args_3) => {
transform_imp_rec_0: do {
const dlst_2 = args_3[0];
const hdm_0 = dlst_2[0];
const expr_1 = undefined === hdm_0 ? false : hdm_0;
const uri_id_2 = args_3[1];
const ctx_3 = args_3[2];
const hdm_1 = args_3[3];
const out_0 = undefined === hdm_1 ? [] : hdm_1;
/* istanbul ignore else */
if (expr_1 === false) {
return [out_0, ctx_3];
}
/* istanbul ignore else */
if (null != expr_1) {
/* istanbul ignore else */
if (expr_1.type === `rec:kv`) {
const dlst_3 = get_key_val_0(expr_1, ctx_3);
const dlst_4 = imp_0(uri_id_2, dlst_3[1], dlst_3[2], expr_1, dlst_3[3]);
args_3 = [dlst_2.slice(1), uri_id_2, dlst_4[2], [...out_0, ...dlst_3[0], ...dlst_4[0]]];
continue transform_imp_rec_0;
}
}
/* istanbul ignore next */
return;
} while (true);
};
const transform_imp_0 = (node_0, uri_id_3, ctx_4) => {
/* istanbul ignore else */
if (null != node_0) {
/* istanbul ignore else */
if (node_0.type === `rec`) {
const result_18 = transform_imp_rec_0(node_0.exprs, uri_id_3, ctx_4);
return result_18;
}
}
/* istanbul ignore else */
if (null != node_0) {
/* istanbul ignore else */
if (node_0.type === `ident`) {
const dlst_5 = bind_0(node_0, ctx_4);
const dlst_6 = imp_0(uri_id_3, false, dlst_5[0], node_0, dlst_5[1]);
return [dlst_6[0], dlst_6[2]];
}
}
/* istanbul ignore next */
return;
};
const transform_import_0 = (node_1, res_id_2, ctx_5) => {
const dlst_7 = transform_0(node_1.right, `src`, ctx_5);
const dlst_8 = impd_0(dlst_7[1], res_id_2, node_1, dlst_7[2]);
return [[...dlst_7[0], ...dlst_8[0]], dlst_8[2]];
};
exports.impd = impd_0;
exports.imp = imp_0;
exports.get_key_val = get_key_val_0;
exports.transform_imp_rec = transform_imp_rec_0;
exports.transform_imp = transform_imp_0;
exports.transform_import = transform_import_0;