UNPKG

aoc-copilot

Version:

Advent of Code automatic runner for examples and inputs

45 lines 1.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.interpolate = interpolate; function interpolate(data, fxs) { for (let fx of fxs) { const [[id, [...args]]] = Object.entries(fx); if (['map', 'reduce'].includes(id) && Array.isArray(data)) { if (id === 'map') { data = data.map(rowData => interpolate(rowData, args[0])); } else { const [[aggId, aggArgs]] = Object.entries(args[0][0]); data = data.reduce((p, c) => { return ops[aggId].apply(undefined, [p, c]); }); } } else { for (let [i, arg] of args.entries()) { if (Array.isArray(arg)) { args[i] = interpolate(data, arg); } } data = ops[id].apply(data, args); } } return data; } const ops = { add(lhs, rhs) { return lhs + rhs; }, at(index) { return this.at(index); }, concat([...str]) { return this.concat(...str); }, join(separator) { return this.join(separator); }, length() { return this.length; }, match(pattern, flags) { return this.match(new RegExp(pattern, flags)); }, multiply(multiplicand, multiplier) { return multiplicand * multiplier; }, parseInt() { return parseInt(this); }, replaceAll(oldValue, newValue) { return this.replaceAll(oldValue, newValue); }, slice(start, end) { return this.slice(start, end); }, split(separator) { return this.split(separator); }, substring(start, end) { return this.substring(start, end); }, toString() { return this.toString(); }, toUpperCase() { return this.toUpperCase(); }, }; //# sourceMappingURL=fx.js.map