markdown-it: display metadata as code block

This commit is contained in:
Le Tan 2018-05-10 20:08:26 +08:00
parent 3eb3db874e
commit 6752a91ef4
6 changed files with 40 additions and 4 deletions

View File

@ -90,8 +90,11 @@ if (VMarkdownitOption.sup) {
mdit = mdit.use(window.markdownitSup); mdit = mdit.use(window.markdownitSup);
} }
var metaDataText = null;
if (VMarkdownitOption.metadata) { if (VMarkdownitOption.metadata) {
mdit = mdit.use(window.markdownitFrontMatter, function(text){}); mdit = mdit.use(window.markdownitFrontMatter, function(text){
metaDataText = text;
});
} }
if (VMarkdownitOption.emoji) { if (VMarkdownitOption.emoji) {
@ -124,12 +127,14 @@ var updateText = function(text) {
} }
asyncJobsCount = 0; asyncJobsCount = 0;
metaDataText = null;
var needToc = mdHasTocSection(text); var needToc = mdHasTocSection(text);
var html = markdownToHtml(text, needToc); var html = markdownToHtml(text, needToc);
contentDiv.innerHTML = html; contentDiv.innerHTML = html;
handleToc(needToc); handleToc(needToc);
insertImageCaption(); insertImageCaption();
handleMetaData();
renderMermaid('lang-mermaid'); renderMermaid('lang-mermaid');
renderFlowchart(['lang-flowchart', 'lang-flow']); renderFlowchart(['lang-flowchart', 'lang-flow']);
renderPlantUML('lang-puml'); renderPlantUML('lang-puml');
@ -169,3 +174,20 @@ var textToHtml = function(identifier, id, timeStamp, text, inlineStyle) {
content.textToHtmlCB(identifier, id, timeStamp, html); content.textToHtmlCB(identifier, id, timeStamp, html);
}; };
// Add a PRE containing metaDataText if it is not empty.
var handleMetaData = function() {
if (!metaDataText || metaDataText.length == 0) {
return;
}
var pre = document.createElement('pre');
var code = document.createElement('code');
code.classList.add(VMetaDataCodeClass);
var text = hljs.highlight('yaml', metaDataText, true).value;
code.innerHTML = text;
pre.appendChild(code);
contentDiv.insertAdjacentElement('afterbegin', pre);
};

View File

@ -19,6 +19,7 @@ var pendingKeys = [];
var VMermaidDivClass = 'mermaid-diagram'; var VMermaidDivClass = 'mermaid-diagram';
var VFlowchartDivClass = 'flowchart-diagram'; var VFlowchartDivClass = 'flowchart-diagram';
var VPlantUMLDivClass = 'plantuml-diagram'; var VPlantUMLDivClass = 'plantuml-diagram';
var VMetaDataCodeClass = 'markdown-metadata';
if (typeof VEnableMermaid == 'undefined') { if (typeof VEnableMermaid == 'undefined') {
VEnableMermaid = false; VEnableMermaid = false;

View File

@ -105,6 +105,10 @@ pre code {
white-space: pre; white-space: pre;
} }
pre code.markdown-metadata {
border-left: 5px solid #00695C;
}
aside { aside {
display: block; display: block;
float: right; float: right;

View File

@ -105,6 +105,10 @@ pre code {
white-space: pre; white-space: pre;
} }
pre code.markdown-metadata {
border-left: 5px solid #00897B;
}
aside { aside {
display: block; display: block;
float: right; float: right;

View File

@ -106,6 +106,10 @@ pre code {
white-space: pre; white-space: pre;
} }
pre code.markdown-metadata {
border-left: 5px solid #00897B;
}
aside { aside {
display: block; display: block;
float: right; float: right;

View File

@ -232,9 +232,10 @@ custom_export=
; html: enable HTML tags in source ; html: enable HTML tags in source
; break: convert '\n' in paragraphs into <br/> ; break: convert '\n' in paragraphs into <br/>
; linkify: auto-convert URL-like text to links ; linkify: auto-convert URL-like text to links
; sub: subscript; ; sub: subscript
; sup: superscript; ; sup: superscript
; metadata: metadata aware; ; metadata: metadata aware
; emoji: emoji and emoticon
markdownit_opt=html,linkify,metadata markdownit_opt=html,linkify,metadata
; Location and configuration for Mathjax ; Location and configuration for Mathjax