md-action.js
1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/**
* 处理接口api的action路由
*/
/* global global */
/* global process */
"use strict";
const _ = require('lodash'),
path = require('path'),
express = require('express'),
router = express.Router(),
config = global.config
;
/**
* markdown文件查看
* @param alias_name 路由别名
* @param md_path markdown文档路径
* @return {*}
* @constructor
*/
function MdAction (alias_name, md_path) {
let alias;
switch (!!alias_name) {
case false: // 没有定义别名,默认为根
alias = '';
break;
case /\/.+/.test(alias_name): // 带根路径别名,直接用
alias = alias_name;
break;
case /[^\/].+/.test(alias_name): // 不带根路径别名,补充根路径
alias = '/' + alias_name;
break;
default: // 只传入根路径,和别名空一样处理
alias = ''
}
let doc_path = path.resolve(process.cwd(), md_path || '');
const MD_REGEXP = new RegExp(`^${alias}\\/([\\/\\w]*)`);
//根据别名处理文档目录所在的markdown文件
const viewer = new (require('./view-markdown'))(doc_path, config.md);
router.get(/(.*)/, function request (req, res, next) {
let url = req.url, urls = url.match(MD_REGEXP) || [], query = req.query;
if (!urls.length) {
return next();
}
let ext = path.parse(url).ext;
if (ext && ext !== '.md') {
return next();
}
res.send(viewer.render(urls[1], query.t));
});
//加载文档目录为静态页,别名为空时指向根路径
router.use(alias || '/', express.static(doc_path));
return router;
}
module.exports = MdAction;