Selaa lähdekoodia

markdown refactoring #507

Hakim El Hattab 11 vuotta sitten
vanhempi
commit
d9c9474938
1 muutettua tiedostoa jossa 31 lisäystä ja 9 poistoa
  1. 31 9
      plugin/markdown/markdown.js

+ 31 - 9
plugin/markdown/markdown.js

@@ -3,7 +3,17 @@
  * markdown inside of presentations as well as loading
  * 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' ) {
 		throw 'The reveal.js Markdown plugin requires marked to be loaded';
@@ -91,7 +101,7 @@
 	 * Parses a data string into multiple slides based
 	 * on the passed in separator arguments.
 	 */
-	function slidifyMarkdown( markdown, options ) {
+	function slidify( markdown, options ) {
 
 		options = options || {};
 		options.separator = options.separator || '^\n---\n$';
@@ -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]'),
 			section;
@@ -187,7 +202,7 @@
 					if( xhr.readyState === 4 ) {
 						if ( xhr.status >= 200 && xhr.status < 300 ) {
 
-							section.outerHTML = slidifyMarkdown( xhr.responseText, {
+							section.outerHTML = slidify( xhr.responseText, {
 								separator: section.getAttribute( 'data-separator' ),
 								verticalSeparator: section.getAttribute( 'data-vertical' ),
 								notesSeparator: section.getAttribute( 'data-notes' ),
@@ -219,7 +234,7 @@
 			}
 			else if( section.getAttribute( 'data-separator' ) ) {
 
-				section.outerHTML = slidifyMarkdown( getMarkdownFromSlide( section ), {
+				section.outerHTML = slidify( getMarkdownFromSlide( section ), {
 					separator: section.getAttribute( 'data-separator' ),
 					verticalSeparator: section.getAttribute( 'data-vertical' ),
 					notesSeparator: section.getAttribute( 'data-notes' ),
@@ -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]');
 
@@ -254,7 +273,10 @@
 
 	}
 
-	loadExternalMarkdown();
-	convertMarkdownToHTML();
+	return {
+		processSlides: processSlides,
+		convertSlides: convertSlides,
+		slidify: slidify
+	};
 
-})();
+}));