From ef9168c7c481805f57feb78853dfdd3dd1409705 Mon Sep 17 00:00:00 2001 From: Hakim El Hattab Date: Fri, 6 Sep 2013 08:24:03 -0400 Subject: [PATCH] fix issue with notes on last slide of external markdown #589 --- plugin/markdown/markdown.js | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/plugin/markdown/markdown.js b/plugin/markdown/markdown.js index c5c2358..739cc91 100755 --- a/plugin/markdown/markdown.js +++ b/plugin/markdown/markdown.js @@ -27,6 +27,10 @@ }); } + var DEFAULT_SLIDE_SEPARATOR = '^\n---\n$', + DEFAULT_NOTES_SEPARATOR = 'note:'; + + /** * Retrieves the markdown contents of a slide section * element. Normalizes leading tabs/whitespace. @@ -82,11 +86,28 @@ } + /** + * Inspects the given options and fills out default + * values for what's not defined. + */ + function getSlidifyOptions( options ) { + + options = options || {}; + options.separator = options.separator || DEFAULT_SLIDE_SEPARATOR; + options.notesSeparator = options.notesSeparator || DEFAULT_NOTES_SEPARATOR; + options.attributes = options.attributes || ''; + + return options; + + } + /** * Helper function for constructing a markdown slide. */ function createMarkdownSlide( content, options ) { + options = getSlidifyOptions( options ); + var notesMatch = content.split( new RegExp( options.notesSeparator, 'mgi' ) ); if( notesMatch.length === 2 ) { @@ -103,10 +124,7 @@ */ function slidify( markdown, options ) { - options = options || {}; - options.separator = options.separator || '^\n---\n$'; - options.notesSeparator = options.notesSeparator || 'note:'; - options.attributes = options.attributes || ''; + options = getSlidifyOptions( options ); var separatorRegex = new RegExp( options.separator + ( options.verticalSeparator ? '|' + options.verticalSeparator : '' ), 'mg' ), horizontalSeparatorRegex = new RegExp( options.separator ); @@ -232,7 +250,7 @@ } } - else if( section.getAttribute( 'data-separator' ) ) { + else if( section.getAttribute( 'data-separator' ) || section.getAttribute( 'data-vertical' ) || section.getAttribute( 'data-notes' ) ) { section.outerHTML = slidify( getMarkdownFromSlide( section ), { separator: section.getAttribute( 'data-separator' ), @@ -242,6 +260,11 @@ }); } + else { + + section.innerHTML = createMarkdownSlide( getMarkdownFromSlide( section ) ); + + } } }