mirror of
				https://github.com/Jermolene/TiddlyWiki5
				synced 2025-10-31 07:32:59 +00:00 
			
		
		
		
	Add strict mode to tag operator
This commit is contained in:
		| @@ -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; | ||||
| }; | ||||
|   | ||||
| @@ -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">> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jermolene
					Jermolene