mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-06 17:33:18 +00:00
57 lines
1.3 KiB
JavaScript
57 lines
1.3 KiB
JavaScript
var unified = require('unified');
|
|
var markdown = require('remark-parse');
|
|
var slug = require('remark-slug');
|
|
var breaks = require('remark-breaks');
|
|
var remark2rehype = require('remark-rehype');
|
|
var format = require('rehype-format');
|
|
var raw = require('rehype-raw');
|
|
var xtend = require('xtend');
|
|
var toHTML = require('hast-util-to-html');
|
|
var sanitize = require('hast-util-sanitize');
|
|
var gh = require('hast-util-sanitize/lib/github');
|
|
var deepmerge = require('deepmerge').default;
|
|
|
|
function stringify(config) {
|
|
var settings = xtend(config, this.data('settings'));
|
|
var schema = deepmerge(gh, {
|
|
'attributes': {
|
|
'input': [
|
|
'type',
|
|
],
|
|
'li': [
|
|
'className'
|
|
],
|
|
'code': [
|
|
'className',
|
|
],
|
|
},
|
|
'tagNames': [
|
|
'input',
|
|
'code'
|
|
]
|
|
});
|
|
this.Compiler = compiler;
|
|
|
|
function compiler(tree) {
|
|
// use sanity to remove dangerous html, the default is
|
|
var hast = sanitize(tree, schema);
|
|
return toHTML(hast, settings);
|
|
}
|
|
}
|
|
|
|
// markdown -> mdast -> html AST -> html
|
|
var processor = unified()
|
|
.use(markdown, {commonmark: true})
|
|
.use(breaks)
|
|
.use(slug)
|
|
.use(remark2rehype, {allowDangerousHTML: true})
|
|
.use(raw)
|
|
.use(format)
|
|
.use(stringify);
|
|
|
|
var processorGetAST = unified()
|
|
.use(markdown, {commonmark: true})
|
|
.use(slug);
|
|
|
|
export { processor, processorGetAST };
|