diff --git a/js/App.js b/js/App.js index d2bc1918d..d8f03e9f3 100644 --- a/js/App.js +++ b/js/App.js @@ -100,14 +100,14 @@ var App = function() { // Set up navigation if we're in the browser if(this.isBrowser) { // Open the PageTemplate - var renderer = new Renderer("PageTemplate",null,this.store); + var renderer = this.store.renderMacro("tiddler",{target: "PageTemplate"}); renderer.renderInDom(document.body); // Register an event handler to handle refreshing the DOM this.store.addEventListener("",function(changes) { renderer.refreshInDom(changes); }); // Set the page title and refresh it when needed - var titleRenderer = new Renderer("WindowTitle",null,this.store); + var titleRenderer = this.store.renderMacro("tiddler",{target: "WindowTitle"}); document.title = titleRenderer.render("text/plain"); this.store.addEventListener("",function(changes) { titleRenderer.refresh(changes); diff --git a/js/Renderer.js b/js/Renderer.js index 940ceb2fb..a2b5c49c8 100644 --- a/js/Renderer.js +++ b/js/Renderer.js @@ -427,44 +427,16 @@ var SliderNode = function(type,label,tooltip,isOpen,children) { ); }; -/* -Construct a renderer object to render a tiddler, optionally specifying a template it should be rendered through -*/ -var Renderer = function(tiddlerTitle,templateTitle,store) { - this.store = store; - // Start the renderer with the tiddler macro - this.macro = new MacroNode( - "tiddler", - {target: tiddlerTitle, template: templateTitle}, - null, - store); - this.macro.execute(); +var Renderer = { + MacroNode: MacroNode, + ElementNode: ElementNode, + TextNode: TextNode, + EntityNode: EntityNode, + LabelNode: LabelNode, + SplitLabelNode: SplitLabelNode, + SliderNode: SliderNode }; -Renderer.prototype.render = function(type) { - return this.macro.render(type); -}; - -Renderer.prototype.renderInDom = function(domNode,type) { - this.macro.renderInDom(domNode,type); -}; - -Renderer.prototype.refresh = function(changes) { - this.macro.refresh(changes); -}; - -Renderer.prototype.refreshInDom = function(changes) { - this.macro.refreshInDom(changes); -}; - -Renderer.MacroNode = MacroNode; -Renderer.ElementNode = ElementNode; -Renderer.TextNode = TextNode; -Renderer.EntityNode = EntityNode; -Renderer.LabelNode = LabelNode; -Renderer.SplitLabelNode = SplitLabelNode; -Renderer.SliderNode = SliderNode; - exports.Renderer = Renderer; })(); diff --git a/js/WikiStore.js b/js/WikiStore.js index 6bba96723..36f399b3f 100755 --- a/js/WikiStore.js +++ b/js/WikiStore.js @@ -287,6 +287,12 @@ WikiStore.prototype.installMacro = function(macro) { this.macros[macro.name] = macro; }; +WikiStore.prototype.renderMacro = function(macroName,params,children,tiddler) { + var macro = Renderer.MacroNode(macroName,params,children,this); + macro.execute([],tiddler); + return macro; +}; + exports.WikiStore = WikiStore; })();