From 0b3efe179e7b9e377a9e5c5db51c66fd9b9e0d11 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Sat, 25 Jan 2014 18:14:30 +0000 Subject: [PATCH] Extend list filter operator to take a text reference Instead of just a title. Means that we can apply the list operator to fields other than the list field. --- core/modules/filters/list.js | 3 ++- core/modules/wiki.js | 10 +++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/modules/filters/list.js b/core/modules/filters/list.js index a73019708..8ccff0098 100644 --- a/core/modules/filters/list.js +++ b/core/modules/filters/list.js @@ -17,7 +17,8 @@ Export our filter function */ exports.list = function(source,operator,options) { var results = [], - list = options.wiki.getTiddlerList(operator.operand); + tr = $tw.utils.parseTextReference(operator.operand), + list = $tw.wiki.getTiddlerList(tr.title,tr.field,tr.index); function checkTiddler(title) { var match = list.indexOf(title) !== -1; if(operator.prefix === "!") { diff --git a/core/modules/wiki.js b/core/modules/wiki.js index 2a9a892ae..83fd6679e 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -611,10 +611,14 @@ exports.setTiddlerData = function(title,data) { /* Return the content of a tiddler as an array containing each line */ -exports.getTiddlerList = function(title) { +exports.getTiddlerList = function(title,field,index) { + if(index) { + return $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,"")); + } + field = field || "list"; var tiddler = this.getTiddler(title); - if(tiddler && $tw.utils.isArray(tiddler.fields.list)) { - return tiddler.fields.list.slice(0); + if(tiddler) { + return ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0); } return []; };