Bugfix/3117 inconsistent each (#3124)

* Following Jeremy's proposal of using a new suffix

* typo fixed
print-window-tiddler
Skeeve 2018-02-17 19:51:18 +01:00 zatwierdzone przez Jeremy Ruston
rodzic 477cb0c47e
commit 5963adf92e
2 zmienionych plików z 27 dodań i 9 usunięć

Wyświetl plik

@ -18,18 +18,34 @@ Export our filter function
*/
exports.each = function(source,operator,options) {
var results =[] ,
value,values = {},
field = operator.operand || "title";
if(operator.suffix !== "list-item") {
value,values = {},
field = operator.operand || "title";
if(operator.suffix === "value" && field === "title") {
source(function(tiddler,title) {
if(tiddler) {
value = (field === "title") ? title : tiddler.getFieldString(field);
if(!$tw.utils.hop(values,value)) {
values[value] = true;
results.push(title);
}
if(!$tw.utils.hop(values,title)) {
values[title] = true;
results.push(title);
}
});
} else if(operator.suffix !== "list-item") {
if(field === "title") {
source(function(tiddler,title) {
if(tiddler && !$tw.utils.hop(values,title)) {
values[title] = true;
results.push(title);
}
});
} else {
source(function(tiddler,title) {
if(tiddler) {
value = tiddler.getFieldString(field);
if(!$tw.utils.hop(values,value)) {
values[value] = true;
results.push(title);
}
}
});
}
} else {
source(function(tiddler,title) {
if(tiddler) {

Wyświetl plik

@ -7,5 +7,7 @@ type: text/vnd.tiddlywiki
<<.operator-example 1 "[each[color]]">>
<<.operator-example 2 "[sort[title]each[type]]" "the alphabetically first tiddler of each type">>
<<.operator-example 3 "[each:list-item[list]]" "all tiddlers listed anywhere in the core list field">>
<<.operator-example 4 "[[Non existing]] [[GettingStarted]] +[each:value[]]" "Compare this to `+[each[]]` below">>
<<.operator-example 5 "[[Non existing]] [[GettingStarted]] +[each[]]" "Compare this to `+[each:value[]]` above">>
For an example of using the <<.op each>> operator to generate a two-tier list of groups and members, see [[GroupedLists]].