diff --git a/tools/ronnjs/lib/ext/markdown.js b/tools/ronnjs/lib/ext/markdown.js index f46f59533d..4c610f9554 100644 --- a/tools/ronnjs/lib/ext/markdown.js +++ b/tools/ronnjs/lib/ext/markdown.js @@ -1252,11 +1252,12 @@ expose.renderJsonML = function( jsonml, options ) { options = options || {}; // include the root element in the rendered output? options.root = options.root || false; + options.xhtml = options.xhtml || false; var content = []; if ( options.root ) { - content.push( render_tree( jsonml ) ); + content.push( render_tree( jsonml, options.xhtml ) ); } else { jsonml.shift(); // get rid of the tag @@ -1265,14 +1266,14 @@ expose.renderJsonML = function( jsonml, options ) { } while ( jsonml.length ) { - content.push( render_tree( jsonml.shift() ) ); + content.push( render_tree( jsonml.shift(), options.xhtml ) ); } } - return content.join( "\n" ).replace( /\n+$/, "" ); + return content.join( "\n\n" ); } -function render_tree( jsonml ) { +function render_tree( jsonml, xhtml ) { // basic case if ( typeof jsonml === "string" ) { return jsonml.replace( /&/g, "&" ) @@ -1289,24 +1290,25 @@ function render_tree( jsonml ) { } while ( jsonml.length ) { - content.push( arguments.callee( jsonml.shift() ) ); + content.push( arguments.callee( jsonml.shift(), xhtml ) ); } var tag_attrs = ""; for ( var a in attributes ) { tag_attrs += " " + a + '="' + attributes[ a ] + '"'; } - - var newlinetab = "\n ", - newline = "\n"; - - if ( ~["em", "strong", "img", "br", "a"].indexOf( tag ) ) { - newlinetab = ""; - newline = ""; - } - + + // if xhtml, self-close empty tags // be careful about adding whitespace here for inline elements - return "<"+ tag + tag_attrs + ">" + newlinetab + content.join( "" ).replace( /\n$/, "" ).replace( /\n/g, "\n " ) + newline + "" + newline; + var markup = "<"+ tag + tag_attrs; + var contentstr = content.join( "" ); + if ( xhtml && contentstr.length == 0 ) { + markup += " />"; + } + else { + markup += ">" + contentstr + ""; + } + return markup; } function convert_tree_to_html( tree, references ) { diff --git a/tools/ronnjs/lib/ronn.js b/tools/ronnjs/lib/ronn.js index 884d91cd00..aadcb3da60 100644 --- a/tools/ronnjs/lib/ronn.js +++ b/tools/ronnjs/lib/ronn.js @@ -267,11 +267,11 @@ exports.Ronn = function(text, version, manual, date) { function toHTML(node) { // problème ici : les & sont remplacés par des & - return md.renderJsonML(node, {root:true}); + return md.renderJsonML(node, {root:true, xhtml:true}); } function toHTMLfragment(node) { - return md.renderJsonML(node); + return md.renderJsonML(node, {xhtml:true}); } function comment(out, str) {