books-cli
Version:
由于本人经常性的写一些文档,然后现有的很多插件版本各方面存在问题,甚至还有一些作者已经放弃维护了,所以决定自己写一个综合性的插件用来满足个人需求。
50 lines (42 loc) • 1.66 kB
JavaScript
/**
* 文件引入语法
*/
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
};