From: VonC Date: Thu, 24 Oct 2013 20:37:55 +0000 (+0200) Subject: First implem for adding classes to enclosing elts. X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=0bc3a836fc62a25a72ea46758c82b8617d5e93c0;p=reveal.js.git First implem for adding classes to enclosing elts. Extra text representing classes is detected and correctly removed. Adding attributes isn't working yet. --- diff --git a/plugin/markdown/markdown.js b/plugin/markdown/markdown.js index 61d6987..3b71c42 100755 --- a/plugin/markdown/markdown.js +++ b/plugin/markdown/markdown.js @@ -268,6 +268,42 @@ } + /** + * Add classes to the parent element of a text node + * From http://stackoverflow.com/questions/9178174/find-all-text-nodes + */ + function addClasses(element) + { + var mardownClassesInElementsRegex = new RegExp( "{\\\.\s*?([^}]+?)}", 'mg' ); + var mardownClassRegex = new RegExp( "([^\"= ]+?)=\"([^\"=]+?)\"", 'mg' ); + if ( element.childNodes.length > 0 ) { + + for (var i = 0; i < element.childNodes.length; i++) { + addClasses(element.childNodes[i]); + } + } + + if (element.nodeType == Node.TEXT_NODE && /\S/.test(element.nodeValue)) { + + var nodeValue = element.nodeValue; + if ( matches = mardownClassesInElementsRegex.exec( nodeValue ) ) { + + var classes = matches[1]; + console.log("'" + classes + "'"); + nodeValue = nodeValue.substring(0,matches.index) + nodeValue.substring(mardownClassesInElementsRegex.lastIndex) + "ee"; + console.log("'" + nodeValue + "'"); + element.nodeValue = nodeValue; + console.log("'" + element.parentNode.tagName + "'"); + + while( matchesClass = mardownClassRegex.exec( classes ) ) { + console.log("attr='" + matchesClass[1] + "'='" + matchesClass[2] + "'"); + element.parentNode.attributes[matchesClass[1]] = matchesClass[2]; + console.log("=>'" + element.parentNode.attributes[matchesClass[1]] + "'"); + } + } + } + } + /** * Converts any current data-markdown slides in the * DOM to HTML. @@ -289,6 +325,7 @@ var markdown = getMarkdownFromSlide( section ); section.innerHTML = marked( markdown ); + addClasses(section); // If there were notes, we need to re-add them after // having overwritten the section's HTML