1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-11-27 03:57:21 +00:00

extend lookup op flexibility with 2 parameters (#5315)

This commit is contained in:
Joshua Fontany 2021-05-21 02:11:23 -07:00 committed by GitHub
parent 270ead4701
commit 81b5fe944a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 63 additions and 17 deletions

View File

@ -5,9 +5,11 @@ module-type: filteroperator
Filter operator that looks up values via a title prefix Filter operator that looks up values via a title prefix
[lookup:<field>[<prefix>]] [lookup:<defaultvalue>:<field OR index>[<prefix>],[<field-name OR index-name>]]
Prepends the prefix to the selected items and returns the specified field value Prepends the prefix to the selected items and returns the specified
field or index value. If the 2nd suffix does not exist, it defaults to field.
If the second operand is missing it defaults to "text" for fields, and "0" for indexes
\*/ \*/
(function(){ (function(){
@ -20,10 +22,35 @@ Prepends the prefix to the selected items and returns the specified field value
Export our filter function Export our filter function
*/ */
exports.lookup = function(source,operator,options) { exports.lookup = function(source,operator,options) {
var results = []; var results = [],
source(function(tiddler,title) { suffixes = operator.suffixes || [],
results.push(options.wiki.getTiddlerText(operator.operand + title) || operator.suffix || ''); defaultSuffix = suffixes[0] ? (suffixes[0][0] || "") : "",
}); indexSuffix = (suffixes[1] && suffixes[1][0] === "index") ? true : false,
target;
if(operator.operands.length == 2) {
target = operator.operands[1]
} else {
target = indexSuffix ? "0": "text";
}
if(indexSuffix) {
source(function(tiddler,title) {
var targetTitle = operator.operands[0] + title;
var data = options.wiki.extractTiddlerDataItem(targetTitle,target,defaultSuffix);
results.push(data);
});
} else {
source(function(tiddler,title) {
var targetTitle = operator.operands[0] + title;
var targetTiddler = options.wiki.getTiddler(targetTitle);
if(targetTiddler) {
var value = targetTiddler.getFieldString(target);
if(value == "" && defaultSuffix !== "") {
value = defaultSuffix;
}
results.push(value);
}
});
}
return results; return results;
}; };

View File

@ -1,7 +1,10 @@
created: 20170907144257037 created: 20170907144257037
modified: 20170907144559822 modified: 20201224034837935
title: lookup Operator (Examples) title: lookup Operator (Examples)
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
<<.operator-example 1 "[all[shadows+tiddlers]tag[$:/tags/PageControls]lookup[$:/config/PageControlButtons/Visibility/]]" "Retrieve the visibility status of each page control button">> <<.operator-example 1 "[all[shadows+tiddlers]tag[$:/tags/PageControls]lookup[$:/config/PageControlButtons/Visibility/]]" "Retrieve the visibility status of each page control button">>
<<.operator-example 2 "[all[shadows+tiddlers]tag[$:/tags/PageControls]lookup:show[$:/config/PageControlButtons/Visibility/]]" "Retrieve the visibility status of each page control button, this time with a default value">> <<.operator-example 2 "[all[shadows+tiddlers]tag[$:/tags/PageControls]lookup:show[$:/config/PageControlButtons/Visibility/]]" "Retrieve the visibility status of each page control button, this time with a default value">>
<<.operator-example 3 "[all[tiddlers]has[plugin-type]removeprefix[$:/plugins/tiddlywiki/]lookup:missing-description:field[$:/plugins/tiddlywiki/],[description]]" "Retrieve the description of all plugin-tiddlers that are in the `$:/plugins/tiddlywiki/` namespace.">>
<<.operator-example 4 "OriginalTiddlerPaths +[lookup:missing-index:index[$:/config/],[HelloThere]]" "Lookup the original tiddler path on disk for the [[Hello There]] tiddler.">>
<<.operator-example 5 "OriginalTiddlerPaths +[lookup:missing-index:index[$:/config/],[MissingTiddler]]" "Lookup the original tiddler path on disk for the [[MissingTiddler]] tiddler.">>

View File

@ -1,24 +1,40 @@
caption: lookup caption: lookup
created: 20170907103639431 created: 20170907103639431
modified: 20170907144703051 modified: 20210116081305739
op-input: a [[selection of titles|Title Selection]] op-input: a [[selection of titles|Title Selection]]
op-output: the lookup values corresponding to each input title op-output: the lookup values corresponding to each lookup tiddler
op-parameter: prefix applied to input titles to yield title of lookup tiddler from which value is retrieved op-parameter: prefix applied to input titles to yield title of lookup tiddler from which value is retrieved. Now accepts 1 or 2 parameters, see below for details
op-parameter-name: P op-parameter-name: P, T
op-purpose: applies a prefix to each input title to yield the title of a tiddler from which the final value is retrieved op-purpose: applies a prefix to each input title to yield the title of a tiddler from which the final value is retrieved. With a single parameter, the default field is "text" and the default index is "0". If a second parameter is provided, that becomes the target field or index.
op-suffix: the default value to be used for missing lookups op-suffix: the default value to be used for missing lookups. This operator can now accept a second suffix, see below for details
op-suffix-name: D op-suffix-name: D, I
tags: [[Filter Operators]] tags: [[Filter Operators]]
title: lookup Operator title: lookup Operator
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
<<.from-version "5.1.15">> <<.from-version "5.1.15">>
The action of this operator is as follows: The action of this operator is as follows with 1 parameter:
* Apply the specified prefix to each input tiddler title, yielding a new list of tiddler titles * Apply the specified prefix to each input tiddler title, yielding a new list of tiddler titles
* Transclude the value of each of those tiddlers * Transclude the value of the `text` field each of those tiddlers
** Substitute the default value for missing or empty tiddlers ** Substitute the default value for missing or empty values
* Return the list of values
<<.from-version "5.1.24">>
The action of this operator is as follows with 2 parameters:
If there are two parameters provided, use the second parameter as the target field or index.
<<.note """If there is only one parameter given, the filter checks for a second suffix equal to "index". If this suffix is found, the default target index is "0".
In all other cases, the default target field is "text".""">>
Then:
* Apply the specified prefix to each input tiddler title, yielding a new list of tiddler titles
* Transclude the value of the target field or index
** Substitute the default value for missing or empty values
* Return the list of values * Return the list of values
<<.operator-examples "lookup">> <<.operator-examples "lookup">>