@@ -15,6 +15,7 @@ import { stripTags } from '../../utils/string'
15
15
16
16
import getUIElements from './lib/editor/ui-elements'
17
17
import { emojifyImageDir } from './lib/editor/constants'
18
+ import { parseFenceCodeParams , serializeParamToAttribute } from './lib/markdown/utils'
18
19
19
20
import markdownit from 'markdown-it'
20
21
import markdownitContainer from 'markdown-it-container'
@@ -1028,24 +1029,30 @@ export function scrollToHash () {
1028
1029
location . hash = hash
1029
1030
}
1030
1031
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
+
1031
1042
function highlightRender ( code , lang ) {
1032
1043
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
+
1033
1049
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>`
1048
1054
}
1055
+
1049
1056
const result = {
1050
1057
value : code
1051
1058
}
@@ -1167,7 +1174,7 @@ md.renderer.rules.fence = (tokens, idx, options, env, self) => {
1167
1174
}
1168
1175
1169
1176
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 )
1171
1178
} else {
1172
1179
highlighted = md . utils . escapeHtml ( token . content )
1173
1180
}
0 commit comments