diff options
author | VonC <vonc@laposte.net> | 2013-11-27 22:48:01 +0100 |
---|---|---|
committer | VonC <vonc@laposte.net> | 2013-11-30 23:12:39 +0100 |
commit | 8ad633e4f3cdc576601e9b9aa5cd85c1f08e427e (patch) | |
tree | f37b05d3c48ab4f69e6c9bf62edc88ddfea119f4 | |
parent | 3330c2a7648767f0ef8298c152ae4f2dd2c38ba0 (diff) | |
download | fosdem-2018-presentation-8ad633e4f3cdc576601e9b9aa5cd85c1f08e427e.tar fosdem-2018-presentation-8ad633e4f3cdc576601e9b9aa5cd85c1f08e427e.tar.gz |
Fix element attributes, except for multi-line.
-rwxr-xr-x | plugin/markdown/markdown.js | 38 | ||||
-rw-r--r-- | test/test-markdown-attributes.html | 8 | ||||
-rw-r--r-- | test/test-markdown-element-attributes.html | 53 |
3 files changed, 60 insertions, 39 deletions
diff --git a/plugin/markdown/markdown.js b/plugin/markdown/markdown.js index d606a4b..34458f2 100755 --- a/plugin/markdown/markdown.js +++ b/plugin/markdown/markdown.js @@ -29,7 +29,7 @@ var DEFAULT_SLIDE_SEPARATOR = '^\n---\n$', DEFAULT_NOTES_SEPARATOR = 'note:', DEFAULT_ELEMENT_ATTRIBUTES_SEPARATOR = '{\\\.\s*?([^}]+?)}', - DEFAULT_SLIDE_ATTRIBUTES_SEPARATOR = '^.*?<!--\\\sslide-attributes:\\\s(.*?)-->'; + DEFAULT_SLIDE_ATTRIBUTES_SEPARATOR = 'slide-attributes:\\\s(.*?)$'; /** @@ -73,7 +73,7 @@ value = attributes[i].value; // disregard attributes that are used for markdown loading/parsing - if( /data\-(markdown|separator|vertical|notes|attributes)/gi.test( name ) ) continue; + if( /data\-(markdown|separator|vertical|notes)/gi.test( name ) ) continue; if( value ) { result.push( name + '=' + value ); @@ -282,12 +282,13 @@ var mardownClassesInElementsRegex = new RegExp( separator, 'mg' ); var mardownClassRegex = new RegExp( "([^\"= ]+?)=\"([^\"=]+?)\"", 'mg' ); var nodeValue = node.nodeValue; + console.log("=== node.nodeValue='" + nodeValue + "' vs. separator '" + separator + "'"); if( matches = mardownClassesInElementsRegex.exec( nodeValue ) ) { var classes = matches[1]; nodeValue = nodeValue.substring( 0, matches.index ) + nodeValue.substring( mardownClassesInElementsRegex.lastIndex ); node.nodeValue = nodeValue; - + console.log("=========== classes='" + classes + "'"); while( matchesClass = mardownClassRegex.exec( classes ) ) { elementTarget.setAttribute( matchesClass[1], matchesClass[2] ); } @@ -302,15 +303,15 @@ */ function addAttributes( section, element, previousElement, separatorElementAttributes, separatorSectionAttributes ) { - console.log("element='" + element.innerHTML + "', nodeType='" + element.nodeType + "'"); + console.log("*** element='" + element.innerHTML + "', nodeType='" + element.nodeType + "'"); console.log("previousElement="+previousElement) console.log("section=****"+section.outerHTML+"****"); - if( element != null && element.childNodes != undefined && element.childNodes.length > 0 ) { + if ( element != null && element.childNodes != undefined && element.childNodes.length > 0 ) { previousParentElement = element; for( var i = 0; i < element.childNodes.length; i++ ) { childElement = element.childNodes[i]; - console.log(" Child element='" + childElement.innerHTML + "'"); - if ( i > 0 ) { + console.log(" Child element='" + childElement.innerHTML + "', type " + childElement.nodeType); + if ( i > 0 && typeof element.childNodes[i-1].setAttribute == 'function' ) { previousParentElement = element.childNodes[i-1]; } parentSection = section; @@ -318,7 +319,10 @@ parentSection = childElement ; previousParentElement = childElement ; } - addAttributes( parentSection, childElement, previousParentElement, separatorElementAttributes, separatorSectionAttributes ); + if ( typeof childElement.setAttribute == 'function' || childElement.nodeType == Node.COMMENT_NODE ) { + console.log(" CALL addAttributes") + addAttributes( parentSection, childElement, previousParentElement, separatorElementAttributes, separatorSectionAttributes ); + } } } @@ -328,15 +332,15 @@ } } // From http://stackoverflow.com/questions/9178174/find-all-text-nodes - if( element.nodeType == Node.TEXT_NODE && /\S/.test(element.nodeValue) ) { - addAttributeInElement( element, element.parentNode, separatorElementAttributes ); - } - if( element.nodeType == Node.ELEMENT_NODE && element.attributes.length > 0 ) { - for( var j = 0; j < element.attributes.length; j++ ){ - var attr = element.attributes[j]; - addAttributeInElement( attr, element, separatorElementAttributes ); - } - } + //if( element.nodeType == Node.TEXT_NODE && /\S/.test(element.nodeValue) ) { + // addAttributeInElement( element, element.parentNode, separatorElementAttributes ); + //} + //if( element.nodeType == Node.ELEMENT_NODE && element.attributes.length > 0 ) { + // for( var j = 0; j < element.attributes.length; j++ ){ + // var attr = element.attributes[j]; + // addAttributeInElement( attr, element, separatorElementAttributes ); + // } + //} } diff --git a/test/test-markdown-attributes.html b/test/test-markdown-attributes.html index 8f77dac..6818cd5 100644 --- a/test/test-markdown-attributes.html +++ b/test/test-markdown-attributes.html @@ -25,7 +25,7 @@ <section data-markdown data-separator="^\n\n\n" data-vertical="^\n\n" data-notes="^Note:" - data-attributes="^\s*?--\s(.*?)$" + data-attributes="--\s(.*?)$" data-charset="utf-8"> <script type="text/template"> # Test attributes in Markdown @@ -34,11 +34,11 @@ ## Slide 2 - -- id="slide2" data-transition="zoom" data-background="#A0C66B" + <!-- -- id="slide2" data-transition="zoom" data-background="#A0C66B" --> ## Slide 2.1 - -- data-background="#ff0000" data-transition="fade" + <!-- -- data-background="#ff0000" data-transition="fade" --> ## Slide 2.2 @@ -47,7 +47,7 @@ ## Slide 3 - -- data-transition="zoom" data-background="#C6916B" + <!-- -- data-transition="zoom" data-background="#C6916B" --> diff --git a/test/test-markdown-element-attributes.html b/test/test-markdown-element-attributes.html index e9f4038..6fe7f9a 100644 --- a/test/test-markdown-element-attributes.html +++ b/test/test-markdown-element-attributes.html @@ -24,19 +24,26 @@ <!-- Slides are separated by newline + three dashes + newline, vertical slides identical but two dashes --> <section data-markdown data-separator="^\n---\n$" data-vertical="^\n--\n$" data-element-attributes="{_\s*?([^}]+?)}">> <script type="text/template"> - ## Slide 1.1 {_class="fragment fade-out" data-fragment-index="1"} + ## Slide 1.1 + <!-- {_class="fragment fade-out" data-fragment-index="1"} --> -- - ## Slide 1.2 {_class="fragment shrink"} + ## Slide 1.2 + <!-- {_class="fragment shrink"} --> - Paragraph 1 {_class="fragment grow"} + Paragraph 1 + <!-- {_class="fragment grow"} --> - Paragraph 2 {_class="fragment grow"} + Paragraph 2 + <!-- {_class="fragment grow"} --> - - list item 1 {_class="fragment roll-in"} - - list item 2 {_class="fragment roll-in"} - - list item 3 {_class="fragment roll-in"} + - list item 1 + <!-- {_class="fragment roll-in"} --> + - list item 2 + <!-- {_class="fragment roll-in"} --> + - list item 3 + <!-- {_class="fragment roll-in"} --> --- @@ -44,24 +51,34 @@ ## Slide 2 - Paragraph 1.2 - multi-line {_class="fragment highlight-red"} + Paragraph 1.2 + multi-line + <!-- {_class="fragment highlight-red"} --> - Paragraph 2.2 {_class="fragment highlight-red"} + Paragraph 2.2 + <!-- {_class="fragment highlight-red"} --> - Paragraph 2.3 {_class="fragment highlight-red"} + Paragraph 2.3 + <!-- {_class="fragment highlight-red"} --> - Paragraph 2.4 {_class="fragment highlight-red"} + Paragraph 2.4 + <!-- {_class="fragment highlight-red"} --> - - list item 1 {_class="fragment highlight-green"} - - list item 2 {_class="fragment highlight-green"} - - list item 3 {_class="fragment highlight-green"} - - list item 4 {_class="fragment highlight-green"} - - list item 5 {_class="fragment highlight-green"} + - list item 1 + <!-- {_class="fragment highlight-green"} --> + - list item 2 + <!-- {_class="fragment highlight-green"} --> + - list item 3 + <!-- {_class="fragment highlight-green"} --> + - list item 4 + <!-- {_class="fragment highlight-green"} --> + - list item 5 + <!-- {_class="fragment highlight-green"} --> Test - ![Example Picture{_class="reveal stretch"}](assets/image2.png) + ![Example Picture](examples/assets/image2.png) + <!-- {_class="reveal stretch"} --> </script> </section> |