@fink/loxia
Version:
A fink to JavaScript compiler.
193 lines (165 loc) • 5.42 kB
JavaScript
import types_0 from "@babel/types";
const arrayExpression_0 = types_0.arrayExpression;
const memberExpression_0 = types_0.memberExpression;
const numericLiteral_0 = types_0.numericLiteral;
const callExpression_0 = types_0.callExpression;
const identifier_0 = types_0.identifier;
import { ˆnull as null_0 } from "@fink/js-interop/nullish.js";
import { add as add_0 } from "../context.js";
import { get_js as get_js_0 } from "../context.js";
import { set_js2 as set_js2_0 } from "../context.js";
import { with_loc as with_loc_0 } from "../context.js";
const ids_to_js_0 = (...args_0) => {
ids_to_js_0: do {
const dlst_0 = args_0[0];
const hdm_0 = dlst_0[0];
const id_0 = undefined === hdm_0 ? false : hdm_0;
const tail_1 = dlst_0.slice(1);
const ctx_0 = args_0[1];
const hdm_1 = args_0[2];
const out_0 = undefined === hdm_1 ? [] : hdm_1;
/* istanbul ignore else */
if (id_0 === false) {
return out_0;
}
/* istanbul ignore else */
if (null != id_0) {
/* istanbul ignore else */
if (id_0.i === `_`) {
args_0 = [tail_1, ctx_0, [...out_0, null_0]];
continue ids_to_js_0;
}
}
const item_0 = get_js_0(id_0, ctx_0);
args_0 = [tail_1, ctx_0, [...out_0, item_0]];
continue ids_to_js_0;
} while (true);
};
const transform_tpl_0 = (expr_0, ctx_1) => {
const arg_8 = ids_to_js_0(expr_0[0].args, ctx_1);
const js_0 = arrayExpression_0(arg_8);
const result_7 = set_js2_0(expr_0, js_0, ctx_1);
return result_7;
};
const transform_tpl_i_0 = (expr_1, ctx_2) => {
const val_2 = expr_1[0].args;
const tpl_id_0 = val_2[0];
const idx_0 = val_2[1];
let ret_3;
ret_3: {
/* istanbul ignore else */
if (true === idx_0 < 0) {
const arg_21 = get_js_0(tpl_id_0, ctx_2);
const arg_24 = identifier_0(`at`);
const arg_20 = memberExpression_0(arg_21, arg_24);
const item_3 = numericLiteral_0(idx_0);
const result_11 = callExpression_0(arg_20, [item_3]);
ret_3 = result_11;
/* istanbul ignore next */
break ret_3;
}
const arg_14 = get_js_0(tpl_id_0, ctx_2);
const arg_17 = numericLiteral_0(idx_0);
const result_10 = memberExpression_0(arg_14, arg_17, true);
ret_3 = result_10;
/* istanbul ignore next */
break ret_3;
}
const js_1 = ret_3;
const result_12 = set_js2_0(expr_1, js_1, ctx_2);
return result_12;
};
const transform_tpl_s_0 = (expr_2, ctx_3) => {
const val_4 = expr_2[0].args;
const end_idx_0 = val_4[2];
const items_2 = get_js_0(val_4[0], ctx_3);
const start_0 = numericLiteral_0(val_4[1]);
let ret_5;
ret_5: {
/* istanbul ignore else */
if (true === end_idx_0 >= 0) {
ret_5 = [start_0];
/* istanbul ignore next */
break ret_5;
}
const item_4 = numericLiteral_0(end_idx_0);
ret_5 = [start_0, item_4];
/* istanbul ignore next */
break ret_5;
}
const args_4 = ret_5;
const arg_37 = identifier_0(`slice`);
const arg_35 = memberExpression_0(items_2, arg_37);
const js_2 = callExpression_0(arg_35, args_4);
const result_20 = set_js2_0(expr_2, js_2, ctx_3);
return result_20;
};
const elems_or_spread_0 = expr_3 => {
/* istanbul ignore else */
if (null != expr_3) {
/* istanbul ignore else */
if (expr_3.type === `ArrayExpression`) {
return expr_3.elements;
}
}
const arg_44 = types_0.spreadElement(expr_3);
const item_7 = with_loc_0(expr_3, arg_44);
return [item_7];
};
const transform_list_append_0 = (expr_4, ctx_4) => {
const val_7 = expr_4[0].args;
const val_id_0 = val_7[1];
const arg_46 = get_js_0(val_7[0], ctx_4);
const elems_0 = elems_or_spread_0(arg_46);
let ret_9;
ret_9: {
/* istanbul ignore else */
if (null != val_id_0) {
/* istanbul ignore else */
if (val_id_0.i === `_`) {
ret_9 = null_0;
/* istanbul ignore next */
break ret_9;
}
}
const result_27 = get_js_0(val_id_0, ctx_4);
ret_9 = result_27;
/* istanbul ignore next */
break ret_9;
}
const elem_0 = ret_9;
const js_3 = arrayExpression_0([...elems_0, elem_0]);
const result_30 = set_js2_0(expr_4, js_3, ctx_4);
return result_30;
};
const transform_list_chain_0 = (expr_5, ctx_5) => {
const val_9 = expr_5[0].args;
const arg_55 = get_js_0(val_9[0], ctx_5);
const elems1_0 = elems_or_spread_0(arg_55);
const arg_58 = get_js_0(val_9[1], ctx_5);
const elems2_0 = elems_or_spread_0(arg_58);
const js_4 = arrayExpression_0([...elems1_0, ...elems2_0]);
const result_35 = set_js2_0(expr_5, js_4, ctx_5);
return result_35;
};
const add_list_0 = ctx_6 => {
const pfn_0 = add_0(`tpl`, transform_tpl_0);
const ppr_0 = pfn_0(ctx_6);
const pfn_1 = add_0(`tpl_i`, transform_tpl_i_0);
const ppr_1 = pfn_1(ppr_0);
const pfn_2 = add_0(`tpl_s`, transform_tpl_s_0);
const ppr_2 = pfn_2(ppr_1);
const pfn_3 = add_0(`lst_a`, transform_list_append_0);
const ppr_3 = pfn_3(ppr_2);
const pfn_4 = add_0(`lst_c`, transform_list_chain_0);
const ppr_4 = pfn_4(ppr_3);
return ppr_4;
};
export const ids_to_js = ids_to_js_0,
transform_tpl = transform_tpl_0,
transform_tpl_i = transform_tpl_i_0,
transform_tpl_s = transform_tpl_s_0,
elems_or_spread = elems_or_spread_0,
transform_list_append = transform_list_append_0,
transform_list_chain = transform_list_chain_0,
add_list = add_list_0;