insertJSX.js (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import { resolve } from "path";
/*
* HACK deduplicate
* HACK make the data validation more elegant
*/
export default function insertJSX(data = {}) {
const siteIndex = this.data("siteIndex"); // calls siteIndex from the processor
const templateDir = resolve(process.cwd(), "templates");
return async (tree) => {
if (data.before != undefined) {
for (let x of [data.before].flat().reverse()) {
const fn = await import(`${templateDir}/${x}.jsx`);
tree.children.unshift(fn.default(data, siteIndex));
}
}
if (data.after != undefined) {
for (let x of [data.after].flat().reverse()) {
const fn = await import(`${templateDir}/${x}.jsx`);
tree.children.push(fn.default(data, siteIndex));
}
}
};
}
|