1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-06-16 02:19:55 +00:00

Add strict mode to tag operator

This commit is contained in:
Jermolene 2016-11-28 13:42:30 +00:00
parent c460cc03a4
commit c65d08240b
2 changed files with 35 additions and 19 deletions

View File

@ -17,19 +17,30 @@ Export our filter function
*/
exports.tag = function(source,operator,options) {
var results = [];
if(operator.prefix === "!") {
if((operator.suffix || "").toLowerCase() === "strict" && !operator.operand) {
// New semantics:
// Always return copy of input if operator.operand is missing
source(function(tiddler,title) {
if(tiddler && !tiddler.hasTag(operator.operand)) {
results.push(title);
}
results.push(title);
});
} else {
source(function(tiddler,title) {
if(tiddler && tiddler.hasTag(operator.operand)) {
results.push(title);
}
});
results = options.wiki.sortByList(results,operator.operand);
// Old semantics:
if(operator.prefix === "!") {
// Returns a copy of the input if operator.operand is missing
source(function(tiddler,title) {
if(tiddler && !tiddler.hasTag(operator.operand)) {
results.push(title);
}
});
} else {
// Returns empty results if operator.operand is missing
source(function(tiddler,title) {
if(tiddler && tiddler.hasTag(operator.operand)) {
results.push(title);
}
});
results = options.wiki.sortByList(results,operator.operand);
}
}
return results;
};

View File

@ -1,18 +1,23 @@
caption: tag
created: 20140410103123179
modified: 20150203191853000
modified: 20161126122900712
op-input: a [[selection of titles|Title Selection]]
op-neg-output: those input tiddlers that do <<.em not>> have tag <<.place T>>
op-output: those input tiddlers that have tag <<.place T>>
op-parameter: the title of a [[tag|Tagging]]
op-parameter-name: T
op-purpose: filter the input by tag
op-suffix: <<.from-version "5.1.14">> optional `strict` flag
op-suffix-name: S
tags: [[Filter Operators]] [[Common Operators]] [[Tag Operators]] [[Negatable Operators]]
title: tag Operator
type: text/vnd.tiddlywiki
caption: tag
op-purpose: filter the input by tag
op-input: a [[selection of titles|Title Selection]]
op-parameter: the title of a [[tag|Tagging]]
op-parameter-name: T
op-output: those input tiddlers that have tag <<.place T>>
op-neg-output: those input tiddlers that do <<.em not>> have tag <<.place T>>
The output is [[sorted|Order of Tagged Tiddlers]] using the tag's <<.field list>> field and the tiddlers' <<.field list-before>> and <<.field list-after>> fields.
If <<.place T>> is empty, the output of `tag` is empty, and the output of `!tag` is a copy of the input.
The behaviour when <<.place T>> is empty depends on the settings of the <<.place S>> optional suffix:
* if <<.place T>> is missing and <<.place S>> is either missing or set to "loose", then the output of `tag` is empty, and the output of `!tag` is a copy of the input.
* <<.from-version "5.1.14">> if <<.place T>> is missing and <<.place S>> is set to "strict", then the output of both `tag` and `!tag` is a copy of the input
<<.operator-examples "tag">>