This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.5 KiB
43 lines
1.5 KiB
// 0 -> Array#forEach |
|
// 1 -> Array#map |
|
// 2 -> Array#filter |
|
// 3 -> Array#some |
|
// 4 -> Array#every |
|
// 5 -> Array#find |
|
// 6 -> Array#findIndex |
|
var ctx = require('./$.ctx') |
|
, IObject = require('./$.iobject') |
|
, toObject = require('./$.to-object') |
|
, toLength = require('./$.to-length') |
|
, asc = require('./$.array-species-create'); |
|
module.exports = function(TYPE){ |
|
var IS_MAP = TYPE == 1 |
|
, IS_FILTER = TYPE == 2 |
|
, IS_SOME = TYPE == 3 |
|
, IS_EVERY = TYPE == 4 |
|
, IS_FIND_INDEX = TYPE == 6 |
|
, NO_HOLES = TYPE == 5 || IS_FIND_INDEX; |
|
return function($this, callbackfn, that){ |
|
var O = toObject($this) |
|
, self = IObject(O) |
|
, f = ctx(callbackfn, that, 3) |
|
, length = toLength(self.length) |
|
, index = 0 |
|
, result = IS_MAP ? asc($this, length) : IS_FILTER ? asc($this, 0) : undefined |
|
, val, res; |
|
for(;length > index; index++)if(NO_HOLES || index in self){ |
|
val = self[index]; |
|
res = f(val, index, O); |
|
if(TYPE){ |
|
if(IS_MAP)result[index] = res; // map |
|
else if(res)switch(TYPE){ |
|
case 3: return true; // some |
|
case 5: return val; // find |
|
case 6: return index; // findIndex |
|
case 2: result.push(val); // filter |
|
} else if(IS_EVERY)return false; // every |
|
} |
|
} |
|
return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; |
|
}; |
|
}; |