lintry

调整md的解析输出结构,增加对[TOC]的支持

......@@ -15,4 +15,4 @@ const mdview = new (require('../lib/mdview')),
const filename = path.resolve(process.cwd(), target);
var result = mdview.renderFile(filename);
console.log(result);
console.log(result.html);
......
......@@ -7,25 +7,38 @@ function MarkdownIt (opts) {
}
opts = opts || {};
let plugin = require('markdown-it-github-toc').default;
const md = require('markdown-it')(opts.options);
const md = require('markdown-it')(opts.options)
.use(plugin, {
anchorLinkSymbol: '¶'
});
this.renderFile = function (filename) {
if (!filename) {
throw new Error('filename can not be null!')
}
let result;
let result = {}, content;
try {
const content = fs.readFileSync(filename).toString();
result = md.render(content);
content = fs.readFileSync(filename).toString();
result.html = md.render(content);
} catch (e) {
result = md.render(`
console.error('convert md to html error', e);
result.html = md.render(`
# 404
*文件找不到!*
`)
}
try {
if (opts.parseTokens) {
result.tokens = md.parse(content, {});
}
} catch (e) {
console.error('parse md error', e)
}
return result;
}
}
......
......@@ -17,6 +17,7 @@
"express": "^4.16.2",
"github-markdown-css": "^2.10.0",
"kml-customize": "git+ssh://git@gitlab.kmlab.com/comm/customize.git#1.0.0",
"markdown-it": "^8.4.0"
"markdown-it": "^8.4.0",
"markdown-it-github-toc": "^3.2.4"
}
}
......
......@@ -3,7 +3,7 @@ const app = express();
const config = require('./init/config');
const mdview = new (require('./lib/mdview')),
const mdview = new (require('./lib/mdview'))({parseTokens: true}),
path = require('path');
const MARKDOWN_FILE_BASE = path.resolve(process.cwd(), config.md.base_path);
......@@ -22,28 +22,33 @@ function sendTemplate (filename, theme) {
file += '.md'
}
let result = mdview.renderFile(file);
let tittle = result.tokens && result.tokens[1] && result.tokens[1].content || filename;
theme = theme || config.md.theme;
return `
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>less theme for standard markdown</title>
<title>${tittle}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/markdown.css">
<link rel="stylesheet" href="/${theme}/${theme}.css">
</head>
<body>
<div class='markdown ${theme}'>
${result}
${result.html}
</div>
</body
</html>
`;
}
app.get('/**', function (req, res) {
app.get('/**', function (req, res, next) {
let url = req.url, urls = url.match(/^\/([\/\w]+)/) || [], query = req.query;
let ext = path.parse(url).ext;
if (ext && ext !== 'md') {
return next();
}
res.send(sendTemplate(urls[1], query.t));
})
......