diff options
Diffstat (limited to 'plugin/markdown/markdown.js')
-rwxr-xr-x | plugin/markdown/markdown.js | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/plugin/markdown/markdown.js b/plugin/markdown/markdown.js index 4847c7a..f4035e2 100755 --- a/plugin/markdown/markdown.js +++ b/plugin/markdown/markdown.js @@ -26,11 +26,13 @@ }); } - var DEFAULT_SLIDE_SEPARATOR = '^\n---\n$', + var DEFAULT_SLIDE_SEPARATOR = '^\r?\n---\r?\n$', DEFAULT_NOTES_SEPARATOR = 'note:', DEFAULT_ELEMENT_ATTRIBUTES_SEPARATOR = '\\\.element\\\s*?(.+?)$', DEFAULT_SLIDE_ATTRIBUTES_SEPARATOR = '\\\.slide:\\\s*?(\\\S.+?)$'; + var SCRIPT_END_PLACEHOLDER = '__SCRIPT_END__'; + /** * Retrieves the markdown contents of a slide section @@ -43,6 +45,9 @@ // strip leading whitespace so it isn't evaluated as code var text = ( template || section ).textContent; + // restore script end tags + text = text.replace( new RegExp( SCRIPT_END_PLACEHOLDER, 'g' ), '</script>' ); + var leadingWs = text.match( /^\n?(\s*)/ )[1].length, leadingTabs = text.match( /^\n?(\t*)/ )[1].length; @@ -76,7 +81,7 @@ if( /data\-(markdown|separator|vertical|notes)/gi.test( name ) ) continue; if( value ) { - result.push( name + '=' + value ); + result.push( name + '="' + value + '"' ); } else { result.push( name ); @@ -115,6 +120,10 @@ content = notesMatch[0] + '<aside class="notes" data-markdown>' + notesMatch[1].trim() + '</aside>'; } + // prevent script end tags in the content from interfering + // with parsing + content = content.replace( /<\/script>/g, SCRIPT_END_PLACEHOLDER ); + return '<script type="text/template">' + content + '</script>'; } |