fix issue with notes on last slide of external markdown #589

edit
Hakim El Hattab 2013-09-06 08:24:03 -04:00
parent a3e6c95e79
commit ef9168c7c4
1 changed files with 28 additions and 5 deletions

View File

@ -27,6 +27,10 @@
}); });
} }
var DEFAULT_SLIDE_SEPARATOR = '^\n---\n$',
DEFAULT_NOTES_SEPARATOR = 'note:';
/** /**
* Retrieves the markdown contents of a slide section * Retrieves the markdown contents of a slide section
* element. Normalizes leading tabs/whitespace. * 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. * Helper function for constructing a markdown slide.
*/ */
function createMarkdownSlide( content, options ) { function createMarkdownSlide( content, options ) {
options = getSlidifyOptions( options );
var notesMatch = content.split( new RegExp( options.notesSeparator, 'mgi' ) ); var notesMatch = content.split( new RegExp( options.notesSeparator, 'mgi' ) );
if( notesMatch.length === 2 ) { if( notesMatch.length === 2 ) {
@ -103,10 +124,7 @@
*/ */
function slidify( markdown, options ) { function slidify( markdown, options ) {
options = options || {}; options = getSlidifyOptions( options );
options.separator = options.separator || '^\n---\n$';
options.notesSeparator = options.notesSeparator || 'note:';
options.attributes = options.attributes || '';
var separatorRegex = new RegExp( options.separator + ( options.verticalSeparator ? '|' + options.verticalSeparator : '' ), 'mg' ), var separatorRegex = new RegExp( options.separator + ( options.verticalSeparator ? '|' + options.verticalSeparator : '' ), 'mg' ),
horizontalSeparatorRegex = new RegExp( options.separator ); 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 ), { section.outerHTML = slidify( getMarkdownFromSlide( section ), {
separator: section.getAttribute( 'data-separator' ), separator: section.getAttribute( 'data-separator' ),
@ -242,6 +260,11 @@
}); });
} }
else {
section.innerHTML = createMarkdownSlide( getMarkdownFromSlide( section ) );
}
} }
} }