1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-10-02 17:00:45 +00:00

Get rid of the Renderer() wrapper and use the MacroNode directly

This commit is contained in:
Jeremy Ruston 2012-02-20 20:52:54 +00:00
parent 53f652bf2a
commit 5ca478d106
3 changed files with 16 additions and 38 deletions

View File

@ -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);

View File

@ -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;
})();

View File

@ -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;
})();