Skip to content
Snippets Groups Projects
Commit d9c94749 authored by Hakim El Hattab's avatar Hakim El Hattab
Browse files

markdown refactoring #507

parent e9b0f5b4
No related branches found
No related tags found
No related merge requests found
...@@ -3,7 +3,17 @@ ...@@ -3,7 +3,17 @@
* markdown inside of presentations as well as loading * markdown inside of presentations as well as loading
* of external markdown documents. * of external markdown documents.
*/ */
(function(){ (function( root, factory ) {
if( typeof exports === 'object' ) {
module.exports = factory( require( './marked' ) );
}
else {
// Browser globals (root is window)
root.returnExports = factory( root.marked );
root.returnExports.processSlides();
root.returnExports.convertSlides();
}
}( this, function( marked ) {
if( typeof marked === 'undefined' ) { if( typeof marked === 'undefined' ) {
throw 'The reveal.js Markdown plugin requires marked to be loaded'; throw 'The reveal.js Markdown plugin requires marked to be loaded';
...@@ -91,7 +101,7 @@ ...@@ -91,7 +101,7 @@
* Parses a data string into multiple slides based * Parses a data string into multiple slides based
* on the passed in separator arguments. * on the passed in separator arguments.
*/ */
function slidifyMarkdown( markdown, options ) { function slidify( markdown, options ) {
options = options || {}; options = options || {};
options.separator = options.separator || '^\n---\n$'; options.separator = options.separator || '^\n---\n$';
...@@ -162,7 +172,12 @@ ...@@ -162,7 +172,12 @@
} }
function loadExternalMarkdown() { /**
* Parses any current data-markdown slides, splits
* multi-slide markdown into separate sections and
* handles loading of external markdown.
*/
function processSlides() {
var sections = document.querySelectorAll( '[data-markdown]'), var sections = document.querySelectorAll( '[data-markdown]'),
section; section;
...@@ -187,7 +202,7 @@ ...@@ -187,7 +202,7 @@
if( xhr.readyState === 4 ) { if( xhr.readyState === 4 ) {
if ( xhr.status >= 200 && xhr.status < 300 ) { if ( xhr.status >= 200 && xhr.status < 300 ) {
section.outerHTML = slidifyMarkdown( xhr.responseText, { section.outerHTML = slidify( xhr.responseText, {
separator: section.getAttribute( 'data-separator' ), separator: section.getAttribute( 'data-separator' ),
verticalSeparator: section.getAttribute( 'data-vertical' ), verticalSeparator: section.getAttribute( 'data-vertical' ),
notesSeparator: section.getAttribute( 'data-notes' ), notesSeparator: section.getAttribute( 'data-notes' ),
...@@ -219,7 +234,7 @@ ...@@ -219,7 +234,7 @@
} }
else if( section.getAttribute( 'data-separator' ) ) { else if( section.getAttribute( 'data-separator' ) ) {
section.outerHTML = slidifyMarkdown( getMarkdownFromSlide( section ), { section.outerHTML = slidify( getMarkdownFromSlide( section ), {
separator: section.getAttribute( 'data-separator' ), separator: section.getAttribute( 'data-separator' ),
verticalSeparator: section.getAttribute( 'data-vertical' ), verticalSeparator: section.getAttribute( 'data-vertical' ),
notesSeparator: section.getAttribute( 'data-notes' ), notesSeparator: section.getAttribute( 'data-notes' ),
...@@ -231,7 +246,11 @@ ...@@ -231,7 +246,11 @@
} }
function convertMarkdownToHTML() { /**
* Converts any current data-markdown slides in the
* DOM to HTML.
*/
function convertSlides() {
var sections = document.querySelectorAll( '[data-markdown]'); var sections = document.querySelectorAll( '[data-markdown]');
...@@ -254,7 +273,10 @@ ...@@ -254,7 +273,10 @@
} }
loadExternalMarkdown(); return {
convertMarkdownToHTML(); processSlides: processSlides,
convertSlides: convertSlides,
slidify: slidify
};
})(); }));
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment