33 lines
612 B
JavaScript
33 lines
612 B
JavaScript
'use strict';
|
|
|
|
|
|
// @example
|
|
// var collect = Collector();
|
|
// collect('foo');
|
|
// collect(['foo', 'bar', 'baz']);
|
|
// collect.result
|
|
// //=> ['foo', 'bar', 'baz']
|
|
//
|
|
module.exports = function Collector () {
|
|
var result = [];
|
|
|
|
// Append elements to array, filtering out duplicates.
|
|
function collect (source) {
|
|
if (Array.isArray(source)) {
|
|
source.forEach(collectOne);
|
|
}
|
|
else {
|
|
collectOne(source);
|
|
}
|
|
|
|
function collectOne (element) {
|
|
if (result.indexOf(element) < 0) {
|
|
result.push(element);
|
|
}
|
|
}
|
|
}
|
|
|
|
collect.result = result;
|
|
return collect;
|
|
};
|