UNPKG

books-cli

Version:

由于本人经常性的写一些文档,然后现有的很多插件版本各方面存在问题,甚至还有一些作者已经放弃维护了,所以决定自己写一个综合性的插件用来满足个人需求。

50 lines (42 loc) 1.66 kB
/** * 文件引入语法 */ const path = require("path"); const tools = require('./Tools'); const languages = require('lang-map').languages; function process(page) { const regex = /^(\s*)@import\s*\"(.*)\"\s*({(.*)})*(\s*)$/; let pageDir = path.dirname(page.rawPath); // 按行分析处理 let pages = page.content.split(/\n|\r\n/); let tag = true; for (const key in pages) { if (pages.hasOwnProperty(key)) { const line = pages[key]; if (line.indexOf('```') != -1) { tag = !tag; continue; } if (tag && regex.test(line)) { let match = regex.exec(line); var lang = "python"; var rawBlock = match[0]; var mermaidContent_1 = match[1]; var mermaidContent_2 = match[2]; var mermaidContent_4 = match[4]; lang = mermaidContent_4 || languages(/.+\.(.+)/.exec(mermaidContent_2)[1])[0]; const absolutePath = path.resolve(pageDir, mermaidContent_2); var code = tools.readFileFromPath(absolutePath); code = code.replace(/(\r\n)|(\n)/g, '\n' + mermaidContent_1); // console.debug(code); const processed = mermaidContent_1 + "```" + lang + "\n" + mermaidContent_1 + code + '\n' + mermaidContent_1 + "```"; // console.debug(processed); page.content = page.content.replace(rawBlock, processed); } } } return page; } module.exports = { process };