Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// 只认```,其他忽略
if (token.markup === '```') {
if (token.info === 'js') {
// 插入到import后,component前
moduleJS.push(token.content)
} else if (token.info === 'jsx') {
// 插入render内
jsx = token.content
}
}
i++
token = tokens[idx + i]
}
// 描述也执行md
return formatOpening(jsx, md.render(m[1]), flag)
}
return formatClosing(flag)
}
})
if (token.markup === '```') {
// 里面的内容都当代码文本输出
codeText = token.content
}
i++
token = tokens[idx + i]
}
// 描述也执行md
return formatOpening(codeText, md.render(m[1]), flag)
}
return formatClosing(flag)
}
})
// md 处理过后的字符串含有 class 和 style ,需要再次处理给到react
const content = md
.render(body)
.replace(/<hr>/g, '<hr>')
.replace(/<br>/g, '<br>')
.replace(/class=/g, 'className=')
.replace(/style="text-align:center"/g, 'style={{ textAlign: "center"}}')
.replace(/style="text-align:left"/g, 'style={{ textAlign: "left"}}')
.replace(/style="text-align:right"/g, 'style={{ textAlign: "right"}}')
return formatModule(imports, moduleJS.join('\n'), content, state)
}
jsx = token.content
}
}
i++
token = tokens[idx + i]
}
// 描述也执行md
return formatOpening(jsx, md.render(m[1]), flag)
}
return formatClosing(flag)
}
})
// md 处理过后的字符串含有 class 和 style ,需要再次处理给到react
let content = md
.render(body)
.replace(/<hr>/g, '<hr>')
.replace(/<br>/g, '<br>')
.replace(/class=/g, 'className=')
.replace(/\[x\]/g, '<input disabled="" checked="" type="checkbox">')
.replace(/\[ \]/g, '<input disabled="" type="checkbox">')
return formatModule(imports, moduleJS.join('\n'), content)
}
// 从 ::: 下一个token开始
let token = tokens[idx + i]
// 如果没有到结尾
while (token.markup !== ':::') {
// 只认```,其他忽略
if (token.markup === '```') {
// 里面的内容都当代码文本输出
codeText = token.content
}
i++
token = tokens[idx + i]
}
// 描述也执行md
return formatOpening(codeText, md.render(m[1]), flag)
}
return formatClosing(flag)
}
})
jsx = token.content
}
}
i++
token = tokens[idx + i]
}
// 描述也执行md
return formatOpening(jsx, md.render(m[1]), flag)
}
return formatClosing(flag)
}
})
// md 处理过后的字符串含有 class 和 style ,需要再次处理给到react
let content = md
.render(body)
.replace(/<hr>/g, '<hr>')
.replace(/<br>/g, '<br>')
.replace(/class=/g, 'className=')
.replace(/\[x\]/g, '<input disabled="" checked="" type="checkbox">')
.replace(/\[ \]/g, '<input disabled="" type="checkbox">')
return formatModule(imports, moduleJS.join('\n'), content)
}
// 只认```,其他忽略
if (token.markup === '```') {
if (token.info === 'js') {
// 插入到import后,component前
moduleJS.push(token.content)
} else if (token.info === 'jsx') {
// 插入render内
jsx = token.content
}
}
i++
token = tokens[idx + i]
}
// 描述也执行md
return formatOpening(jsx, md.render(m[1]), flag)
}
return formatClosing(flag)
}
})
// 从 ::: 下一个token开始
let token = tokens[idx + i]
// 如果没有到结尾
while (token.markup !== ':::') {
// 只认```,其他忽略
if (token.markup === '```') {
// 里面的内容都当代码文本输出
codeText = token.content
}
i++
token = tokens[idx + i]
}
// 描述也执行md
return formatOpening(codeText, md.render(m[1]), flag)
}
return formatClosing(flag)
}
})
Handlebars.registerHelper('markdown', function(path) {
var content = fs.readFileSync(path, 'utf-8');
return new Handlebars.SafeString(md.render(content));
});
};
require("fs").readFile(require.resolve("./markdown.html"), function(err, html) {
let type;
if (!err) {
data = html.toString().replace(/(<title>)\s*(<\/title>)/i, `$1${ data.title }$2`).replace(/(<div class="row">\n*)\s*(\n*<\/div>)/i, "$1" + require("markdown-it")().render("# " + data.title + "\n\n" + (desc ? "## " + desc + "\n\n" : "") + data.explanation) + "$2");
type = "html";
} else {
type = "markdown";
}
res.type(type).send(data);
});
}</title>
export default function(source: string, options = {} as object): string {
return require('markdown-it')(
'default',
Object.assign(
{
html: true,
xhtmlOut: true,
breaks: true,
linkify: true,
typographer: true,
highlight: renderHighlight,
},
options,
),
).render(source);
}