diff --git a/plugin/markdown/markdown.js b/plugin/markdown/markdown.js index 00d253803bb945df67958e93acaad41951729f3a..9564208f0378908b090c3f8a124fb75fd1d2e6c0 100755 --- a/plugin/markdown/markdown.js +++ b/plugin/markdown/markdown.js @@ -283,9 +283,18 @@ } else { - - section.innerHTML = createMarkdownSlide( getMarkdownFromSlide( section ) ); - + var content = getMarkdownFromSlide( section ); + var slideAttributesSeparatorRegex = new RegExp( section.getAttribute( 'data-attributes' ) || DEFAULT_SLIDE_ATTRIBUTES_SEPARATOR, 'm' ); + var matchAttributes = slideAttributesSeparatorRegex.exec( content ); + if ( matchAttributes ) { + var slideAttributes = matchAttributes[1]; + content = content.replace( slideAttributesSeparatorRegex,"" ); + var slideAttributesRegex = new RegExp( "([^\"= ]+?)=\"([^\"=]+?)\"", 'mg' ); + while( matchesAttributes = slideAttributesRegex.exec( slideAttributes ) ) { + section.setAttribute( matchesAttributes[1], matchesAttributes[2] ); + } + } + section.innerHTML = createMarkdownSlide( content ); } } diff --git a/test/test-markdown-attributes.html b/test/test-markdown-attributes.html index 262c6ae7e755d0e3897a9492c5603d7d1879af71..cc0317706b17d903304267d3d99b3e8f40089f70 100644 --- a/test/test-markdown-attributes.html +++ b/test/test-markdown-attributes.html @@ -87,6 +87,31 @@ </script> </section> + <section data-markdown> + <script type="text/template"> + <!-- slide-attributes: data-background="#ff0000" --> + ## Hello world + </script> + </section> + + <section data-markdown> + <script type="text/template"> + ## Hello world + <!-- slide-attributes: data-background="#ff0000" --> + </script> + </section> + + <section data-markdown> + <script type="text/template"> + ## Hello world + + Test + <!-- slide-attributes: data-background="#ff0000" --> + + More Test + </script> + </section> + </div> </div> diff --git a/test/test-markdown-attributes.js b/test/test-markdown-attributes.js index 3e88341010d5078f7f64afdd35ac0aab23a7e452..a11f63bc08c00c7ac6b5d770d6a48b5bef3f5087 100644 --- a/test/test-markdown-attributes.js +++ b/test/test-markdown-attributes.js @@ -36,6 +36,11 @@ Reveal.addEventListener( 'ready', function() { strictEqual( document.querySelectorAll( '.reveal .slides>section>section[data-transition="page"]' ).length, 1, 'found one vertical slide with data-transition="fade"' ); strictEqual( document.querySelectorAll( '.reveal .slides section [data-transition="concave"]' ).length, 1, 'found one slide with data-transition="zoom"' ); }); + + test( 'data-transition attributes with inline content', function() { + strictEqual( document.querySelectorAll( '.reveal .slides>section[data-background="#ff0000"]' ).length, 3, 'found three horizontal slides with data-background="#ff0000"' ); + }); + } ); Reveal.initialize();