From 3f68b1369944197a7b4a21b9c02e8530881ec9e2 Mon Sep 17 00:00:00 2001 From: "jeremy@jermolene.com" Date: Tue, 30 Aug 2022 18:01:46 +0100 Subject: [PATCH] First commit --- core/modules/filters.js | 45 +++++- core/modules/filters/count.js | 4 +- core/modules/filters/format/json.js | 35 +++++ core/modules/filters/json-ops.js | 142 ++++++++++++++++++ core/modules/filters/math.js | 11 +- core/modules/utils/simple-list.js | 86 +++++++++++ core/modules/utils/utils.js | 49 ++++++ editions/test/tiddlers/tests/test-filters.js | 4 + .../test/tiddlers/tests/test-json-filters.js | 105 +++++++++++++ 9 files changed, 468 insertions(+), 13 deletions(-) create mode 100644 core/modules/filters/format/json.js create mode 100644 core/modules/filters/json-ops.js create mode 100644 core/modules/utils/simple-list.js create mode 100644 editions/test/tiddlers/tests/test-json-filters.js diff --git a/core/modules/filters.js b/core/modules/filters.js index 221206e6b..d1d149a5a 100644 --- a/core/modules/filters.js +++ b/core/modules/filters.js @@ -195,12 +195,20 @@ exports.parseFilter = function(filterString) { exports.getFilterOperators = function() { if(!this.filterOperators) { - $tw.Wiki.prototype.filterOperators = {}; - $tw.modules.applyMethods("filteroperator",this.filterOperators); + $tw.Wiki.prototype.oldFilterOperators = {}; + $tw.modules.applyMethods("filteroperator",this.oldFilterOperators); + $tw.Wiki.prototype.newFilterOperators = {}; + $tw.modules.applyMethods("newfilteroperator",this.newFilterOperators); + $tw.Wiki.prototype.filterOperators = $tw.utils.extend({},$tw.Wiki.prototype.oldFilterOperators,$tw.Wiki.prototype.newFilterOperators); } return this.filterOperators; }; +exports.isFilterOperatorNew = function(name) { + this.getFilterOperators(); + return name in $tw.Wiki.prototype.newFilterOperators; +}; + exports.getFilterRunPrefixes = function() { if(!this.filterRunPrefixes) { $tw.Wiki.prototype.filterRunPrefixes = {}; @@ -209,11 +217,21 @@ exports.getFilterRunPrefixes = function() { return this.filterRunPrefixes; } -exports.filterTiddlers = function(filterString,widget,source) { +exports.filterTiddlersPolymorphic = function(filterString,widget,source) { var fn = this.compileFilter(filterString); return fn.call(this,source,widget); }; +exports.filterTiddlers = function(filterString,widget,source) { + var results = this.filterTiddlersPolymorphic(filterString,widget,source); + for(var t=0; t