From 66212cd4917917fc646d255d3f1b43232755700a Mon Sep 17 00:00:00 2001 From: "jeremy@jermolene.com" Date: Sun, 11 Jun 2023 09:46:05 +0100 Subject: [PATCH] Refactor dependency on widget.getVariableInfo Fixing https://talk.tiddlywiki.org/t/tw-v5-3-0-pre-problem-with-autocomplete-plugin/6958/9?u=jeremyruston --- core/modules/filters.js | 5 +++-- core/modules/widgets/widget.js | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/core/modules/filters.js b/core/modules/filters.js index d4fd355c6..aa82a352a 100644 --- a/core/modules/filters.js +++ b/core/modules/filters.js @@ -12,6 +12,8 @@ Adds tiddler filtering methods to the $tw.Wiki object. /*global $tw: false */ "use strict"; +var widgetClass = require("$:/core/modules/widgets/widget.js").widget; + /* Maximum permitted filter recursion depth */ var MAX_FILTER_DEPTH = 300; @@ -269,8 +271,7 @@ exports.compileFilter = function(filterString) { operand.value = self.getTextReference(operand.text,"",currTiddlerTitle); } else if(operand.variable) { var varTree = $tw.utils.parseFilterVariable(operand.text); - var variableInfo = widget.getVariableInfo(varTree.name,{params: varTree.params, source: source}); - operand.value = (variableInfo.resultList ? variableInfo.resultList[0] : variableInfo.text) || ""; + operand.value = widgetClass.evaluateVariable(widget,varTree.name,{params: varTree.params, source: source})[0] || ""; } else { operand.value = operand.text; } diff --git a/core/modules/widgets/widget.js b/core/modules/widgets/widget.js index 8d9c05950..c0d2bc7a6 100755 --- a/core/modules/widgets/widget.js +++ b/core/modules/widgets/widget.js @@ -796,6 +796,20 @@ Widget.prototype.allowActionPropagation = function() { return true; }; +/* +Evaluate a variable with parameters. This is a static convenience method that attempts to evaluate a variable as a function, returning an array of strings +*/ +Widget.evaluateVariable = function(widget,name,options) { + var result; + if(widget.getVariableInfo) { + var variableInfo = widget.getVariableInfo(name,options); + result = variableInfo.resultList || [variableInfo.text]; + } else { + result = [widget.getVariable(name)]; + } + return result; +}; + exports.widget = Widget; })();