From f6445a04a0270b83e46243c0d1ed23f27d64396b Mon Sep 17 00:00:00 2001 From: VonC Date: Thu, 10 Oct 2013 10:57:18 +0200 Subject: [PATCH] Fix bug on data attributes for first vertical slide. The first slide of a vertical stack see some data attributes ignored. Mainly the data-transition one. Repeat all data-attributes on the wrapping section element. Ignore any other attributes (like 'id="xxx"'), in order to not mess with internal links (by repeating twice an id). --- plugin/markdown/markdown.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/plugin/markdown/markdown.js b/plugin/markdown/markdown.js index b5476aa..537a0c5 100755 --- a/plugin/markdown/markdown.js +++ b/plugin/markdown/markdown.js @@ -178,12 +178,25 @@ for( var i = 0, len = sectionStack.length; i < len; i++ ) { // vertical if( sectionStack[i] instanceof Array ) { - markdownSections += '
'; + // The 'data-xxx' attributes of the first child must be set on the wrapping parent section to be effective + // Mainly for data-transition (otherwise, it is ignored for the first vertical slide) + firstChild = sectionStack[i][0]; + matchAttributes = slideAttributesSeparatorRegex.exec(firstChild); + slideAttributes = matchAttributes ? matchAttributes[1] : ""; + if( slideAttributes != "") { + // console.log('all attr=' + slideAttributes ); + // http://stackoverflow.com/questions/18025762/javascript-regex-replace-all-word-characters-except-word-characters-between-ch + // Keep only data-attributes for the parent slide section. + dataAttributes = slideAttributes.replace(/(data-\S+=\"[^\"]+?\")|\w|[\"=]/g, function(a, b) { return b || ''; }); + // console.log('new attr=' + dataAttributes ); + markdownSections += '
'; + } sectionStack[i].forEach( function( child ) { matchAttributes = slideAttributesSeparatorRegex.exec(child); slideAttributes = matchAttributes ? matchAttributes[1] : ""; child = matchAttributes ? child.replace(slideAttributesSeparatorRegex,"") : child + // console.log('slide attributes ' + options.slideAttributesSeparator + ' => ' + slideAttributes) markdownSections += '
' + createMarkdownSlide( child, options ) + '
'; } );