mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-09-28 23:10:46 +00:00
Refactor widget.getVariable() to have better behaved parameters
This commit is contained in:
parent
46bdc52261
commit
8fbc5759ad
@ -50,7 +50,7 @@ ElementWidget.prototype.execute = function() {
|
|||||||
if(this.namespace) {
|
if(this.namespace) {
|
||||||
this.setVariable("namespace",this.namespace);
|
this.setVariable("namespace",this.namespace);
|
||||||
} else {
|
} else {
|
||||||
this.namespace = this.getVariable("namespace",null,"http://www.w3.org/1999/xhtml");
|
this.namespace = this.getVariable("namespace",{defaultValue: "http://www.w3.org/1999/xhtml"});
|
||||||
}
|
}
|
||||||
// Make the child widgets
|
// Make the child widgets
|
||||||
this.makeChildWidgets();
|
this.makeChildWidgets();
|
||||||
|
@ -43,7 +43,7 @@ MacroCallWidget.prototype.execute = function() {
|
|||||||
params.push({name: name, value: attribute});
|
params.push({name: name, value: attribute});
|
||||||
});
|
});
|
||||||
// Get the macro value
|
// Get the macro value
|
||||||
var text = this.getVariable(this.parseTreeNode.name || this.getAttribute("$name"),params);
|
var text = this.getVariable(this.parseTreeNode.name || this.getAttribute("$name"),{params: params});
|
||||||
// Parse the macro
|
// Parse the macro
|
||||||
var parser = this.wiki.new_parseText("text/vnd.tiddlywiki",text,
|
var parser = this.wiki.new_parseText("text/vnd.tiddlywiki",text,
|
||||||
{parseAsInline: !this.parseTreeNode.isBlock}),
|
{parseAsInline: !this.parseTreeNode.isBlock}),
|
||||||
|
@ -66,7 +66,7 @@ Compose a string comprising the title, field and/or index to identify this trans
|
|||||||
TranscludeWidget.prototype.makeRecursionMarker = function() {
|
TranscludeWidget.prototype.makeRecursionMarker = function() {
|
||||||
var output = [];
|
var output = [];
|
||||||
output.push("{");
|
output.push("{");
|
||||||
output.push(this.getVariable("tiddlerTitle",""));
|
output.push(this.getVariable("tiddlerTitle",{defaultValue: ""}));
|
||||||
output.push("|");
|
output.push("|");
|
||||||
output.push(this.transcludeTitle || "");
|
output.push(this.transcludeTitle || "");
|
||||||
output.push("|");
|
output.push("|");
|
||||||
|
@ -72,10 +72,14 @@ Widget.prototype.execute = function() {
|
|||||||
/*
|
/*
|
||||||
Get the prevailing value of a context variable
|
Get the prevailing value of a context variable
|
||||||
name: name of variable
|
name: name of variable
|
||||||
|
options: see below
|
||||||
|
Options include
|
||||||
params: array of {name:, value:} for each parameter
|
params: array of {name:, value:} for each parameter
|
||||||
|
defaultValue: default value if the variable is not defined
|
||||||
*/
|
*/
|
||||||
Widget.prototype.getVariable = function(name,actualParams,defaultValue) {
|
Widget.prototype.getVariable = function(name,options) {
|
||||||
actualParams = actualParams || [];
|
options = options || {};
|
||||||
|
var actualParams = options.params || [];
|
||||||
// Search up the widget tree for the variable name
|
// Search up the widget tree for the variable name
|
||||||
var node = this;
|
var node = this;
|
||||||
while(node && !$tw.utils.hop(node.variables,name)) {
|
while(node && !$tw.utils.hop(node.variables,name)) {
|
||||||
@ -83,7 +87,7 @@ Widget.prototype.getVariable = function(name,actualParams,defaultValue) {
|
|||||||
}
|
}
|
||||||
// If we get to the root then look for a macro module
|
// If we get to the root then look for a macro module
|
||||||
if(!node) {
|
if(!node) {
|
||||||
return this.evaluateMacroModule(name,actualParams,defaultValue);
|
return this.evaluateMacroModule(name,actualParams,options.defaultValue);
|
||||||
}
|
}
|
||||||
// Get the value
|
// Get the value
|
||||||
var value = node.variables[name].value;
|
var value = node.variables[name].value;
|
||||||
@ -126,7 +130,7 @@ Widget.prototype.substituteVariableParameters = function(text,formalParams,actua
|
|||||||
Widget.prototype.substituteVariableReferences = function(text) {
|
Widget.prototype.substituteVariableReferences = function(text) {
|
||||||
var self = this;
|
var self = this;
|
||||||
return text.replace(/\$\(([^\)\$]+)\)\$/g,function(match,p1,offset,string) {
|
return text.replace(/\$\(([^\)\$]+)\)\$/g,function(match,p1,offset,string) {
|
||||||
return self.getVariable(p1,null,"");
|
return self.getVariable(p1,{defaultValue: ""});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -215,7 +219,7 @@ Widget.prototype.computeAttributes = function() {
|
|||||||
if(attribute.type === "indirect") {
|
if(attribute.type === "indirect") {
|
||||||
value = self.wiki.getTextReference(attribute.textReference,"",self.getVariable("tiddlerTitle"));
|
value = self.wiki.getTextReference(attribute.textReference,"",self.getVariable("tiddlerTitle"));
|
||||||
} else if(attribute.type === "macro") {
|
} else if(attribute.type === "macro") {
|
||||||
value = self.getVariable(attribute.value.name,attribute.value.params);
|
value = self.getVariable(attribute.value.name,{params: attribute.value.params});
|
||||||
} else { // String attribute
|
} else { // String attribute
|
||||||
value = attribute.value;
|
value = attribute.value;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user