UNPKG

svem

Version:

Svelte in Markdown preprocessor

29 lines (28 loc) 964 B
import { visit } from "unist-util-visit"; import { dirname, resolve } from "path"; import { existsSync, readFileSync } from "node:fs"; const remarkCodeImport = (options) => { return (tree, file) => { visit(tree, "code", (node) => { if (typeof node.attributes?.file === "string") { const baseDir = dirname(options?.cwd ?? file.path); const filePath = resolve(baseDir, node.attributes.file); if (existsSync(filePath)) { if (options?.fileAsTitle && !node.attributes.title) { node.attributes.title = node.attributes.file; } node.value = readFileSync(filePath, "utf-8").trim(); if (options?.transform) { node.value = options.transform(node.value); } delete node.attributes.file; } else { console.warn(`\u26A0\uFE0F [CODE-IMPORT-ERROR] File not found: ${filePath}`); } } }); }; }; export { remarkCodeImport };