From c41edc86e19a58582234c0943510e4663141a7ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Weber?= Date: Sat, 5 Aug 2023 14:05:52 +0200 Subject: [PATCH] mermaid: make yaml parsing more robust #603 #601 --- static/js/theme.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/static/js/theme.js b/static/js/theme.js index 8e84ebf040..0ba1586bed 100644 --- a/static/js/theme.js +++ b/static/js/theme.js @@ -164,13 +164,13 @@ function initMermaid( update, attrs ) { var YAML=1; var INIT=2; var GRAPH=3; - var d = /^(?:\s*[\n\r])*(-{3}\s*[\n\r](?:.*?)[\n\r]-{3}(?:\s*[\n\r]+)+)?(?:\s*(?:%%\s*\{\s*\w+\s*:([^%]*?)%%\s*[\n\r]?))?(.*)$/s + var d = /^(?:\s*[\n\r])*(?:-{3}(\s*[\n\r](?:.*?)[\n\r])-{3}(?:\s*[\n\r]+)+)?(?:\s*(?:%%\s*\{\s*\w+\s*:([^%]*?)%%\s*[\n\r]?))?(.*)$/s var m = d.exec( graph ); var yaml = {}; var dir = {}; var content = graph; if( m && m.length == 4 ){ - yaml = m[YAML] ? jsyaml.load(m[YAML].replaceAll("---", "")) : yaml; + yaml = m[YAML] ? jsyaml.load( m[YAML] ) : yaml; dir = m[INIT] ? JSON.parse( '{ "init": ' + m[INIT] ).init : dir; content = m[GRAPH] ? m[GRAPH] : content; } @@ -179,13 +179,13 @@ function initMermaid( update, attrs ) { }; var serializeGraph = function( graph ){ - yamlPart = ''; - dirPart = ''; - if (JSON.stringify(graph.dir) !== '{}') { - dirPart = '%%{init: ' + JSON.stringify(graph.dir) + '}%%\n'; + var yamlPart = ''; + if( Object.keys( graph.yaml ).length ){ + yamlPart = '---\n' + jsyaml.dump( graph.yaml ) + '---\n'; } - if (JSON.stringify(graph.yaml) !== '{}') { - yamlPart = '---\n' + jsyaml.dump(graph.yaml) + '---\n'; + var dirPart = ''; + if( Object.keys( graph.dir ).length ){ + dirPart = '%%{init: ' + JSON.stringify( graph.dir ) + '}%%\n'; } return yamlPart + dirPart + graph.content; };