1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-06-24 22:33:16 +00:00

Optimise getStateQualifier()

Another fix for #1864, this time we’re caching state qualifiers as they
are expensive to compute.
This commit is contained in:
Jermolene 2015-07-06 11:23:12 +01:00
parent c6e48ebc2d
commit 848a7f4e74

View File

@ -195,16 +195,23 @@ Widget.prototype.hasVariable = function(name,value) {
Construct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain Construct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain
*/ */
Widget.prototype.getStateQualifier = function(name) { Widget.prototype.getStateQualifier = function(name) {
this.qualifiers = this.qualifiers || Object.create(null);
name = name || "transclusion"; name = name || "transclusion";
var output = [], if(this.qualifiers[name]) {
node = this; return this.qualifiers[name];
while(node && node.parentWidget) { } else {
if($tw.utils.hop(node.parentWidget.variables,name)) { var output = [],
output.push(node.getVariable(name)); node = this;
while(node && node.parentWidget) {
if($tw.utils.hop(node.parentWidget.variables,name)) {
output.push(node.getVariable(name));
}
node = node.parentWidget;
} }
node = node.parentWidget; var value = $tw.utils.hashString(output.join(""));
this.qualifiers[name] = value;
return value;
} }
return $tw.utils.hashString(output.join(""));
}; };
/* /*