@@ -15,6 +15,7 @@ import { stripTags } from '../../utils/string'
1515
1616import getUIElements from './lib/editor/ui-elements'
1717import { emojifyImageDir } from './lib/editor/constants'
18+ import { parseFenceCodeParams , serializeParamToAttribute } from './lib/markdown/utils'
1819
1920import markdownit from 'markdown-it'
2021import markdownitContainer from 'markdown-it-container'
@@ -1028,24 +1029,30 @@ export function scrollToHash () {
10281029 location . hash = hash
10291030}
10301031
1032+ const fenceCodeAlias = {
1033+ sequence : 'sequence-diagram' ,
1034+ flow : 'flow-chart' ,
1035+ graphviz : 'graphviz' ,
1036+ mermaid : 'mermaid' ,
1037+ abc : 'abc' ,
1038+ vega : 'vega' ,
1039+ geo : 'geo'
1040+ }
1041+
10311042function highlightRender ( code , lang ) {
10321043 if ( ! lang || / n o ( - ? ) h i g h l i g h t | p l a i n | t e x t / . test ( lang ) ) { return }
1044+
1045+ const params = parseFenceCodeParams ( lang )
1046+ const attr = serializeParamToAttribute ( params )
1047+ lang = lang . split ( / \s + / g) [ 0 ]
1048+
10331049 code = escapeHTML ( code )
1034- if ( lang === 'sequence' ) {
1035- return `<div class="sequence-diagram raw">${ code } </div>`
1036- } else if ( lang === 'flow' ) {
1037- return `<div class="flow-chart raw">${ code } </div>`
1038- } else if ( lang === 'graphviz' ) {
1039- return `<div class="graphviz raw">${ code } </div>`
1040- } else if ( lang === 'mermaid' ) {
1041- return `<div class="mermaid raw">${ code } </div>`
1042- } else if ( lang === 'abc' ) {
1043- return `<div class="abc raw">${ code } </div>`
1044- } else if ( lang === 'vega' ) {
1045- return `<div class="vega raw">${ code } </div>`
1046- } else if ( lang === 'geo' ) {
1047- return `<div class="geo raw">${ code } </div>`
1050+
1051+ const langAlias = fenceCodeAlias [ lang ]
1052+ if ( langAlias ) {
1053+ return `<div class="${ langAlias } raw"${ attr } >${ code } </div>`
10481054 }
1055+
10491056 const result = {
10501057 value : code
10511058 }
@@ -1167,7 +1174,7 @@ md.renderer.rules.fence = (tokens, idx, options, env, self) => {
11671174 }
11681175
11691176 if ( options . highlight ) {
1170- highlighted = options . highlight ( token . content , langName ) || md . utils . escapeHtml ( token . content )
1177+ highlighted = options . highlight ( token . content , info ) || md . utils . escapeHtml ( token . content )
11711178 } else {
11721179 highlighted = md . utils . escapeHtml ( token . content )
11731180 }
0 commit comments