From aa4aeb187cb5a885411b612d818f189ba124d23f Mon Sep 17 00:00:00 2001 From: Saq Imtiaz Date: Wed, 24 Jan 2024 12:33:50 +0100 Subject: [PATCH] Fixes functions to use variables set by filter runs (#7906) * fix: functions should use variables set by filter runs * refactor: code clean up * chore: added more tests --- core/modules/widgets/widget.js | 2 +- .../functions/FunctionFilterrunVariables.tid | 24 +++++++++++++++++++ .../functions/FunctionFilterrunVariables2.tid | 20 ++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 editions/test/tiddlers/tests/data/functions/FunctionFilterrunVariables.tid create mode 100644 editions/test/tiddlers/tests/data/functions/FunctionFilterrunVariables2.tid diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index af4892b9e..ea300ca0e 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -153,7 +153,7 @@ Widget.prototype.getVariableInfo = function(name,options) { } else if(variable.isFunctionDefinition) { // Function evaluations params = self.resolveVariableParameters(variable.params,actualParams); - var variables = Object.create(null); + var variables = options.variables || Object.create(null); // Apply default parameter values $tw.utils.each(variable.params,function(param,index) { if(param["default"]) { diff --git a/editions/test/tiddlers/tests/data/functions/FunctionFilterrunVariables.tid b/editions/test/tiddlers/tests/data/functions/FunctionFilterrunVariables.tid new file mode 100644 index 000000000..5226e9f05 --- /dev/null +++ b/editions/test/tiddlers/tests/data/functions/FunctionFilterrunVariables.tid @@ -0,0 +1,24 @@ +title: Functions/FunctionFilterrunVariables +description: Functions in filter runs that set variables +type: text/vnd.tiddlywiki-multiple +tags: [[$:/tags/wiki-test-spec]] + +title: Idiosyncrasy +caption: Idiosyncrasy Caption Field + ++ +title: Output + +\whitespace trim +\procedure demo-subfilter() [] +\function .demo-function() [] + +<$let currentTiddler="Idiosyncrasy"> +<$text text={{{ [get[caption]!is[blank]else] :map[subfilter] }}}/>, +<$text text={{{ [get[caption]!is[blank]else] :map[.demo-function[]] }}}/> + + ++ +title: ExpectedResult + +

Idiosyncrasy Caption Field,Idiosyncrasy Caption Field

\ No newline at end of file diff --git a/editions/test/tiddlers/tests/data/functions/FunctionFilterrunVariables2.tid b/editions/test/tiddlers/tests/data/functions/FunctionFilterrunVariables2.tid new file mode 100644 index 000000000..07b8c412a --- /dev/null +++ b/editions/test/tiddlers/tests/data/functions/FunctionFilterrunVariables2.tid @@ -0,0 +1,20 @@ +title: Functions/FunctionFilterrunVariables2 +description: Functions in filter runs that set variables +type: text/vnd.tiddlywiki-multiple +tags: [[$:/tags/wiki-test-spec]] + +title: Apple +cost: 5 + ++ +title: Output + +\whitespace trim +\function .doublecost() [get[cost]multiply[2]] + +<$text text={{{ [[Apple]] :map[.doublecost[]] }}}/> + ++ +title: ExpectedResult + +10 \ No newline at end of file