mirror of
https://github.com/Jermolene/TiddlyWiki5.git
synced 2026-04-28 00:00:48 -07:00
Refactor rendertree to simplify context handling
Get rid of the separate renderContext stack and instead have a parent pointer on renderer nodes. This lets us walk back up the render tree to resolve context references
This commit is contained in:
parent
32dc09d8ac
commit
8564602256
42 changed files with 175 additions and 183 deletions
|
|
@ -54,7 +54,7 @@ var ViewWidget = function(renderer) {
|
|||
|
||||
ViewWidget.prototype.generate = function() {
|
||||
// Get parameters from our attributes
|
||||
this.tiddlerTitle = this.renderer.getAttribute("tiddler",this.renderer.getContextTiddlerTitle());
|
||||
this.tiddlerTitle = this.renderer.getAttribute("tiddler",this.renderer.tiddlerTitle);
|
||||
this.fieldName = this.renderer.getAttribute("field","text");
|
||||
this.format = this.renderer.getAttribute("format","text");
|
||||
// Get the value to display
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ DateViewer.prototype.render = function() {
|
|||
this.viewWidget.attributes = {
|
||||
"class": "tw-view-date"
|
||||
};
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer.renderContext,[{
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer,[{
|
||||
type: "text",
|
||||
text: value
|
||||
}]);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ HtmlEncodedViewer.prototype.render = function() {
|
|||
this.viewWidget.attributes = {
|
||||
"class": "tw-view-htmlencoded"
|
||||
};
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer.renderContext,[{
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer,[{
|
||||
type: "text",
|
||||
text: $tw.utils.htmlEncode(value)
|
||||
}]);
|
||||
|
|
|
|||
|
|
@ -21,20 +21,17 @@ var HtmlWikifiedViewer = function(viewWidget,tiddler,field,value) {
|
|||
|
||||
HtmlWikifiedViewer.prototype.render = function() {
|
||||
// Parse the field text
|
||||
var newRenderContext = {
|
||||
parentContext: this.viewWidget.renderer.renderContext
|
||||
};
|
||||
var wiki = this.viewWidget.renderer.renderTree.wiki,
|
||||
parser = wiki.parseText("text/vnd.tiddlywiki",this.value),
|
||||
renderTree = new $tw.WikiRenderTree(parser,{wiki: wiki});
|
||||
renderTree.execute(newRenderContext);
|
||||
renderTree.execute();
|
||||
var text = renderTree.render("text/html");
|
||||
// Set the element details
|
||||
this.viewWidget.tag = "pre";
|
||||
this.viewWidget.attributes = {
|
||||
"class": "tw-view-htmlwikified"
|
||||
};
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer.renderContext,[{
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer,[{
|
||||
type: "text",
|
||||
text: text
|
||||
}]);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ JsEncodedViewer.prototype.render = function() {
|
|||
this.viewWidget.attributes = {
|
||||
"class": "tw-view-jsencoded"
|
||||
};
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer.renderContext,[{
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer,[{
|
||||
type: "text",
|
||||
text: $tw.utils.stringify(value)
|
||||
}]);
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ LinkViewer.prototype.render = function() {
|
|||
this.viewWidget.attributes = {
|
||||
"class": "tw-view-link"
|
||||
};
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer.renderContext,[{
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer,[{
|
||||
type: "element",
|
||||
tag: "$link",
|
||||
attributes: {
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ RelativeDateViewer.prototype.render = function() {
|
|||
this.viewWidget.attributes = {
|
||||
"class": "tw-view-date"
|
||||
};
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer.renderContext,[{
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer,[{
|
||||
type: "text",
|
||||
text: value
|
||||
}]);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ WikifiedViewer.prototype.render = function() {
|
|||
if(this.tiddler && this.tiddler.fields.title) {
|
||||
node.attributes.target = {type: "string", value: this.tiddler.fields.title}
|
||||
}
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer.renderContext,[node]);
|
||||
this.viewWidget.children = this.viewWidget.renderer.renderTree.createRenderers(this.viewWidget.renderer,[node]);
|
||||
};
|
||||
|
||||
exports.wikified = WikifiedViewer;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue