added $tw.utils.pushOnce

retained check for basic each nonetheless

tests pass
This commit is contained in:
Tobias Beer
2015-10-08 14:07:06 +02:00
parent 4788725ccf
commit d0a24bd9f0
2 changed files with 18 additions and 11 deletions
+9
View File
@@ -84,6 +84,15 @@ $tw.utils.each = function(object,callback) {
}
};
/*
Pushes a value to an array only when not yet contained.
*/
$tw.utils.pushOnce = function(array,value) {
if(0 > array.indexOf(value)){
array.push(value);
}
}
/*
Helper for making DOM elements
tag: tag name
+9 -11
View File
@@ -17,19 +17,17 @@ With suffix "list", selects all tiddlers that are values in a specified list fie
Export our filter function
*/
exports.each = function(source,operator,options) {
var results = [],
values = {},
field = operator.operand || "title",
add = function(val,title) {
if(!$tw.utils.hop(values,val)) {
values[val] = true;
results.push(title);
}
};
var results =[] ,
value,values = {},
field = operator.operand || "title";
if("list" !== operator.suffix) {
source(function(tiddler,title) {
if(tiddler) {
add("title" === field ? title : tiddler.getFieldString(field),title);
value = "title" === field ? title : tiddler.getFieldString(field);
if(!$tw.utils.hop(values,value)) {
values[value] = true;
results.push(title);
}
}
});
} else {
@@ -38,7 +36,7 @@ exports.each = function(source,operator,options) {
$tw.utils.each(
options.wiki.getTiddlerList(title,field),
function(value) {
add(value,value);
$tw.utils.pushOnce(results,value);
}
);
}