UNPKG

tsl-markdown-loader

Version:

tsl readme loader

106 lines 7.71 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.toVueComponent = exports.toCardSection = void 0; const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = require("path"); const handlebars_1 = __importDefault(require("handlebars")); const highlight_js_1 = __importDefault(require("highlight.js")); const fast_glob_1 = __importDefault(require("fast-glob")); const DEMO_CONTENT = fs_extra_1.default.readFileSync(path_1.join(__dirname, "..", "template", "demo.tpl")).toString(); const COMMON_CONTENT = fs_extra_1.default.readFileSync(path_1.join(__dirname, "..", "template", "common.tpl")).toString(); /** * 获取demo */ function getDemo(dirname) { let docs = []; // 获取src下面组件的readme.md文档 fast_glob_1.default.sync(path_1.join(dirname, "demo", "**", "*.vue").replace(/\\/g, "/")).forEach((file) => { const [name] = path_1.parse(file).name.split("."); docs.push({ file, name }); }); return docs; } function getFileContext(path) { if (fs_extra_1.default.pathExistsSync(path)) { return fs_extra_1.default.readFileSync(path).toString(); } else { return ""; } } /** * 把html中的片段按照H标签自动分拆为独立的每块(主要用于浏览是排版好看) * @param html */ function toCardSection(html) { const group = html .replace(/<([^\/ >]+)/g, `<$1 :class="'tsl-el'"`) .replace(/<h3/g, ":::<h3") .replace(/<h2/g, ":::<h2") .split(":::"); return group .map((fragment) => { if (fragment.indexOf("<h3") !== -1) { return `<div class="card">${fragment}</div>`; } return fragment; }) .join(""); } exports.toCardSection = toCardSection; /** * 把html转换为PC端的vue组件 * @param html */ function toVueComponent(html, dirname, loader) { loader.addContextDependency && loader.addContextDependency(dirname); let demos = getDemo(dirname), cardHtml = toCardSection(html); if (demos.length === 0) { let handleBar = handlebars_1.default.compile(COMMON_CONTENT); return handleBar({ html: cardHtml }); } let handleBar = handlebars_1.default.compile(DEMO_CONTENT), components = [], imports = []; // regexStr = []; // 组装example 代码模块 /*demos.map((demo: any) => { regexStr.push(`{{\\s*${demo.name}\\s*}}`); });*/ let /*regex = new RegExp(regexStr.join("|"), "g"), */ cacheFile = {}; cardHtml = cardHtml.replace(/\{\{[^\}]+\}\}/g, (str) => { let code = str.replace(/\{|\}|\s/g, ""), demo = demos.find((item) => item.name === code); if (!demo) { return str; } if (!cacheFile[demo.file]) { cacheFile[demo.file] = getFileContext(demo.file); } let fileCode = cacheFile[demo.file], key = demo.name.replace(/-/g, ""); components.push(`ori${key}`); imports.push({ file: demo.file, key: `ori${key}` }); return ` <ori${key}></ori${key}> <template v-slot:source> <pre v-pre> <code style="display: none" class="code-str">${encodeURIComponent(fileCode)}</code> <code>${highlight_js_1.default.highlightAuto(fileCode).value}</code> </pre> </template> `; }); return handleBar({ html: cardHtml, imports, components: components.join(",") }); } exports.toVueComponent = toVueComponent; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy93cmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHdEQUEyQjtBQUMzQiwrQkFBbUM7QUFDbkMsNERBQW9DO0FBQ3BDLGdFQUFnQztBQUNoQywwREFBNkI7QUFFN0IsTUFBTSxZQUFZLEdBQUcsa0JBQUcsQ0FBQyxZQUFZLENBQUMsV0FBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEcsTUFBTSxjQUFjLEdBQUcsa0JBQUcsQ0FBQyxZQUFZLENBQUMsV0FBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDcEc7O0dBRUc7QUFDSCxTQUFTLE9BQU8sQ0FBQyxPQUFlO0lBQzlCLElBQUksSUFBSSxHQUEwQyxFQUFFLENBQUM7SUFDckQsd0JBQXdCO0lBQ3hCLG1CQUFJLENBQUMsSUFBSSxDQUFDLFdBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDbkYsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDUixJQUFJO1lBQ0osSUFBSTtTQUNMLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsSUFBWTtJQUNsQyxJQUFJLGtCQUFHLENBQUMsY0FBYyxDQUFD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