Add 'data-element-attributes' attr. to 'section'.
authorVonC <vonc@laposte.net>
Sat, 26 Oct 2013 22:27:44 +0000 (00:27 +0200)
committerVonC <vonc@laposte.net>
Sun, 27 Oct 2013 21:49:43 +0000 (22:49 +0100)
By default '{\\\.\s*?([^}]+?)}'.

plugin/markdown/markdown.js

index 3219e96e342f3a47062614ef170287fa74543a08..fccc442034ece6939feeaee3ce7d700d4a27465e 100755 (executable)
@@ -28,6 +28,7 @@
 
        var DEFAULT_SLIDE_SEPARATOR = '^\n---\n$',
                DEFAULT_NOTES_SEPARATOR = 'note:';
+               DEFAULT_ELEMENT_ATTRIBUTES_SEPARATOR = '{\\\.\s*?([^}]+?)}';
 
 
        /**
                                xhr.onreadystatechange = function() {
                                        if( xhr.readyState === 4 ) {
                                                if ( xhr.status >= 200 && xhr.status < 300 ) {
-
                                                        section.outerHTML = slidify( xhr.responseText, {
                                                                separator: section.getAttribute( 'data-separator' ),
                                                                verticalSeparator: section.getAttribute( 'data-vertical' ),
         * directly on refresh (F5)
         * http://stackoverflow.com/questions/5690269/disabling-chrome-cache-for-website-development/7000899#answer-11786277
         */
-       function addAttributeInElement( node, elementTarget ){
-               var mardownClassesInElementsRegex = new RegExp( "{\\\.\s*?([^}]+?)}", 'mg' );
+       function addAttributeInElement( node, elementTarget, separator ){
+               var mardownClassesInElementsRegex = new RegExp( separator, 'mg' );
                var mardownClassRegex = new RegExp( "([^\"= ]+?)=\"([^\"=]+?)\"", 'mg' );
                var nodeValue = node.nodeValue;
                if ( matches = mardownClassesInElementsRegex.exec( nodeValue ) ) {
         * Add attributes to the parent element of a text node,
         * or the element of an attribute node.
         */
-       function addAttributes( element )
+       function addAttributes( element, separator )
        {
                if ( element.childNodes.length > 0 ) {
 
                        for ( var i = 0; i < element.childNodes.length; i++ ) {
-                               addAttributes( element.childNodes[i] );
+                               addAttributes( element.childNodes[i], separator );
                        }
                }
                var nodeValue;
                var elementTarget;
                // From http://stackoverflow.com/questions/9178174/find-all-text-nodes
                if ( element.nodeType == Node.TEXT_NODE && /\S/.test(element.nodeValue) ) {
-                       addAttributeInElement( element, element.parentNode );
+                       addAttributeInElement( element, element.parentNode, separator );
                }
                if ( element.nodeType == Node.ELEMENT_NODE && element.attributes.length > 0 ) {
                        for ( iattr=0; iattr<element.attributes.length; iattr++ ){
                                var attr = element.attributes[iattr];
-                               addAttributeInElement(attr, element)
+                               addAttributeInElement(attr, element, separator )
                        }
                }
        }
                                var markdown = getMarkdownFromSlide( section );
 
                                section.innerHTML = marked( markdown );
-                               addAttributes( section );
+                               addAttributes(  section, section.getAttribute( 'data-element-attributes' ) ||
+                                                               section.parentNode.getAttribute( 'data-element-attributes' ) ||
+                                                               DEFAULT_ELEMENT_ATTRIBUTES_SEPARATOR );
 
                                // If there were notes, we need to re-add them after
                                // having overwritten the section's HTML