/* Wiki text macro implementation */ /*jslint node: true */ "use strict"; var ArgParser = require("./ArgParser.js").ArgParser, WikiTextParser = require("./WikiTextParser.js").WikiTextParser, utils = require("./Utils.js"), util = require("util"); var WikiTextRenderer = function(parser,store,title) { this.parser = parser; this.store = store; this.title = title; }; WikiTextRenderer.prototype.render = function(type) { if(type === "text/html") { return this.renderAsHtml(); } else if (type === "text/plain") { return this.renderAsText(); } else { return null; } }; WikiTextRenderer.prototype.renderAsHtml = function() { var output = [], renderSubTree; var renderElement = function(element, selfClosing) { var tagBits = [element.type]; if(element.attributes) { for(var a in element.attributes) { var r = element.attributes[a]; if(a === "style") { var s = []; for(var t in r) { s.push(t + ":" + r[t] + ";"); } r = s.join(""); } tagBits.push(a + "=\"" + utils.htmlEncode(r) + "\""); } } output.push("<" + tagBits.join(" ") + (selfClosing ? " /" : "") + ">"); if(!selfClosing) { if(element.children) { renderSubTree(element.children); } output.push(""); } }; renderSubTree = function(tree) { for(var t=0; t