mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-27 12:07:19 +00:00
Cache result of parsing macro calls which don't use text subsitution (#5205)
This commit is contained in:
parent
b0f6d50b60
commit
0b1a05d10d
@ -55,9 +55,18 @@ MacroCallWidget.prototype.execute = function() {
|
||||
// Are we rendering to HTML?
|
||||
if(this.renderOutput === "text/html") {
|
||||
// If so we'll return the parsed macro
|
||||
var parser = this.wiki.parseText(this.parseType,text,
|
||||
// Check if we've already cached parsing this macro
|
||||
var parser;
|
||||
if(variableInfo.srcVariable && variableInfo.srcVariable.parser) {
|
||||
parser = variableInfo.srcVariable.parser;
|
||||
} else {
|
||||
parser = this.wiki.parseText(this.parseType,text,
|
||||
{parseAsInline: !this.parseTreeNode.isBlock});
|
||||
parseTreeNodes = parser ? parser.tree : [];
|
||||
if(variableInfo.isCacheable && variableInfo.srcVariable) {
|
||||
// variableInfo.srcVariable.parser = parser;
|
||||
}
|
||||
}
|
||||
var parseTreeNodes = parser ? parser.tree : [];
|
||||
// Wrap the parse tree in a vars widget assigning the parameters to variables named "__paramname__"
|
||||
var attributes = {};
|
||||
$tw.utils.each(variableInfo.params,function(param) {
|
||||
|
@ -113,7 +113,8 @@ Widget.prototype.getVariableInfo = function(name,options) {
|
||||
// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)
|
||||
if(parentWidget && name in parentWidget.variables) {
|
||||
var variable = parentWidget.variables[name],
|
||||
value = variable.value,
|
||||
originalValue = variable.value,
|
||||
value = originalValue,
|
||||
params = this.resolveVariableParameters(variable.params,actualParams);
|
||||
// Substitute any parameters specified in the definition
|
||||
$tw.utils.each(params,function(param) {
|
||||
@ -125,7 +126,9 @@ Widget.prototype.getVariableInfo = function(name,options) {
|
||||
}
|
||||
return {
|
||||
text: value,
|
||||
params: params
|
||||
params: params,
|
||||
srcVariable: variable,
|
||||
isCacheable: originalValue === value
|
||||
};
|
||||
}
|
||||
// If the variable doesn't exist in the parent widget then look for a macro module
|
||||
|
Loading…
Reference in New Issue
Block a user