|
@ -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 ) ); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|