mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-22 16:35:14 +00:00
716 lines
15 KiB
JavaScript
716 lines
15 KiB
JavaScript
// Generated by LiveScript 1.6.0
|
|
var each, map, compact, filter, reject, remove, partition, find, head, first, tail, last, initial, empty, reverse, unique, uniqueBy, fold, foldl, fold1, foldl1, foldr, foldr1, unfoldr, concat, concatMap, flatten, difference, intersection, union, countBy, groupBy, andList, orList, any, all, sort, sortWith, sortBy, sum, product, mean, average, maximum, minimum, maximumBy, minimumBy, scan, scanl, scan1, scanl1, scanr, scanr1, slice, take, drop, splitAt, takeWhile, dropWhile, span, breakList, zip, zipWith, zipAll, zipAllWith, at, elemIndex, elemIndices, findIndex, findIndices, toString$ = {}.toString;
|
|
each = curry$(function(f, xs){
|
|
var i$, len$, x;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
f(x);
|
|
}
|
|
return xs;
|
|
});
|
|
map = curry$(function(f, xs){
|
|
var i$, len$, x, results$ = [];
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
results$.push(f(x));
|
|
}
|
|
return results$;
|
|
});
|
|
compact = function(xs){
|
|
var i$, len$, x, results$ = [];
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
if (x) {
|
|
results$.push(x);
|
|
}
|
|
}
|
|
return results$;
|
|
};
|
|
filter = curry$(function(f, xs){
|
|
var i$, len$, x, results$ = [];
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
if (f(x)) {
|
|
results$.push(x);
|
|
}
|
|
}
|
|
return results$;
|
|
});
|
|
reject = curry$(function(f, xs){
|
|
var i$, len$, x, results$ = [];
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
if (!f(x)) {
|
|
results$.push(x);
|
|
}
|
|
}
|
|
return results$;
|
|
});
|
|
remove = curry$(function(el, xs){
|
|
var i, x$;
|
|
i = elemIndex(el, xs);
|
|
x$ = xs.slice();
|
|
if (i != null) {
|
|
x$.splice(i, 1);
|
|
}
|
|
return x$;
|
|
});
|
|
partition = curry$(function(f, xs){
|
|
var passed, failed, i$, len$, x;
|
|
passed = [];
|
|
failed = [];
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
(f(x) ? passed : failed).push(x);
|
|
}
|
|
return [passed, failed];
|
|
});
|
|
find = curry$(function(f, xs){
|
|
var i$, len$, x;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
if (f(x)) {
|
|
return x;
|
|
}
|
|
}
|
|
});
|
|
head = first = function(xs){
|
|
return xs[0];
|
|
};
|
|
tail = function(xs){
|
|
if (!xs.length) {
|
|
return;
|
|
}
|
|
return xs.slice(1);
|
|
};
|
|
last = function(xs){
|
|
return xs[xs.length - 1];
|
|
};
|
|
initial = function(xs){
|
|
if (!xs.length) {
|
|
return;
|
|
}
|
|
return xs.slice(0, -1);
|
|
};
|
|
empty = function(xs){
|
|
return !xs.length;
|
|
};
|
|
reverse = function(xs){
|
|
return xs.concat().reverse();
|
|
};
|
|
unique = function(xs){
|
|
var result, i$, len$, x;
|
|
result = [];
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
if (!in$(x, result)) {
|
|
result.push(x);
|
|
}
|
|
}
|
|
return result;
|
|
};
|
|
uniqueBy = curry$(function(f, xs){
|
|
var seen, i$, len$, x, val, results$ = [];
|
|
seen = [];
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
val = f(x);
|
|
if (in$(val, seen)) {
|
|
continue;
|
|
}
|
|
seen.push(val);
|
|
results$.push(x);
|
|
}
|
|
return results$;
|
|
});
|
|
fold = foldl = curry$(function(f, memo, xs){
|
|
var i$, len$, x;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
memo = f(memo, x);
|
|
}
|
|
return memo;
|
|
});
|
|
fold1 = foldl1 = curry$(function(f, xs){
|
|
return fold(f, xs[0], xs.slice(1));
|
|
});
|
|
foldr = curry$(function(f, memo, xs){
|
|
var i$, x;
|
|
for (i$ = xs.length - 1; i$ >= 0; --i$) {
|
|
x = xs[i$];
|
|
memo = f(x, memo);
|
|
}
|
|
return memo;
|
|
});
|
|
foldr1 = curry$(function(f, xs){
|
|
return foldr(f, xs[xs.length - 1], xs.slice(0, -1));
|
|
});
|
|
unfoldr = curry$(function(f, b){
|
|
var result, x, that;
|
|
result = [];
|
|
x = b;
|
|
while ((that = f(x)) != null) {
|
|
result.push(that[0]);
|
|
x = that[1];
|
|
}
|
|
return result;
|
|
});
|
|
concat = function(xss){
|
|
return [].concat.apply([], xss);
|
|
};
|
|
concatMap = curry$(function(f, xs){
|
|
var x;
|
|
return [].concat.apply([], (function(){
|
|
var i$, ref$, len$, results$ = [];
|
|
for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) {
|
|
x = ref$[i$];
|
|
results$.push(f(x));
|
|
}
|
|
return results$;
|
|
}()));
|
|
});
|
|
flatten = function(xs){
|
|
var x;
|
|
return [].concat.apply([], (function(){
|
|
var i$, ref$, len$, results$ = [];
|
|
for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) {
|
|
x = ref$[i$];
|
|
if (toString$.call(x).slice(8, -1) === 'Array') {
|
|
results$.push(flatten(x));
|
|
} else {
|
|
results$.push(x);
|
|
}
|
|
}
|
|
return results$;
|
|
}()));
|
|
};
|
|
difference = function(xs){
|
|
var yss, res$, i$, to$, results, len$, x, j$, len1$, ys;
|
|
res$ = [];
|
|
for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) {
|
|
res$.push(arguments[i$]);
|
|
}
|
|
yss = res$;
|
|
results = [];
|
|
outer: for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
for (j$ = 0, len1$ = yss.length; j$ < len1$; ++j$) {
|
|
ys = yss[j$];
|
|
if (in$(x, ys)) {
|
|
continue outer;
|
|
}
|
|
}
|
|
results.push(x);
|
|
}
|
|
return results;
|
|
};
|
|
intersection = function(xs){
|
|
var yss, res$, i$, to$, results, len$, x, j$, len1$, ys;
|
|
res$ = [];
|
|
for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) {
|
|
res$.push(arguments[i$]);
|
|
}
|
|
yss = res$;
|
|
results = [];
|
|
outer: for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
for (j$ = 0, len1$ = yss.length; j$ < len1$; ++j$) {
|
|
ys = yss[j$];
|
|
if (!in$(x, ys)) {
|
|
continue outer;
|
|
}
|
|
}
|
|
results.push(x);
|
|
}
|
|
return results;
|
|
};
|
|
union = function(){
|
|
var xss, res$, i$, to$, results, len$, xs, j$, len1$, x;
|
|
res$ = [];
|
|
for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) {
|
|
res$.push(arguments[i$]);
|
|
}
|
|
xss = res$;
|
|
results = [];
|
|
for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) {
|
|
xs = xss[i$];
|
|
for (j$ = 0, len1$ = xs.length; j$ < len1$; ++j$) {
|
|
x = xs[j$];
|
|
if (!in$(x, results)) {
|
|
results.push(x);
|
|
}
|
|
}
|
|
}
|
|
return results;
|
|
};
|
|
countBy = curry$(function(f, xs){
|
|
var results, i$, len$, x, key;
|
|
results = {};
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
key = f(x);
|
|
if (key in results) {
|
|
results[key] += 1;
|
|
} else {
|
|
results[key] = 1;
|
|
}
|
|
}
|
|
return results;
|
|
});
|
|
groupBy = curry$(function(f, xs){
|
|
var results, i$, len$, x, key;
|
|
results = {};
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
key = f(x);
|
|
if (key in results) {
|
|
results[key].push(x);
|
|
} else {
|
|
results[key] = [x];
|
|
}
|
|
}
|
|
return results;
|
|
});
|
|
andList = function(xs){
|
|
var i$, len$, x;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
if (!x) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
};
|
|
orList = function(xs){
|
|
var i$, len$, x;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
if (x) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
};
|
|
any = curry$(function(f, xs){
|
|
var i$, len$, x;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
if (f(x)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
});
|
|
all = curry$(function(f, xs){
|
|
var i$, len$, x;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
if (!f(x)) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
});
|
|
sort = function(xs){
|
|
return xs.concat().sort(function(x, y){
|
|
if (x > y) {
|
|
return 1;
|
|
} else if (x < y) {
|
|
return -1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
});
|
|
};
|
|
sortWith = curry$(function(f, xs){
|
|
return xs.concat().sort(f);
|
|
});
|
|
sortBy = curry$(function(f, xs){
|
|
return xs.concat().sort(function(x, y){
|
|
if (f(x) > f(y)) {
|
|
return 1;
|
|
} else if (f(x) < f(y)) {
|
|
return -1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
});
|
|
});
|
|
sum = function(xs){
|
|
var result, i$, len$, x;
|
|
result = 0;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
result += x;
|
|
}
|
|
return result;
|
|
};
|
|
product = function(xs){
|
|
var result, i$, len$, x;
|
|
result = 1;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
result *= x;
|
|
}
|
|
return result;
|
|
};
|
|
mean = average = function(xs){
|
|
var sum, i$, len$, x;
|
|
sum = 0;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
x = xs[i$];
|
|
sum += x;
|
|
}
|
|
return sum / xs.length;
|
|
};
|
|
maximum = function(xs){
|
|
var max, i$, ref$, len$, x;
|
|
max = xs[0];
|
|
for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {
|
|
x = ref$[i$];
|
|
if (x > max) {
|
|
max = x;
|
|
}
|
|
}
|
|
return max;
|
|
};
|
|
minimum = function(xs){
|
|
var min, i$, ref$, len$, x;
|
|
min = xs[0];
|
|
for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {
|
|
x = ref$[i$];
|
|
if (x < min) {
|
|
min = x;
|
|
}
|
|
}
|
|
return min;
|
|
};
|
|
maximumBy = curry$(function(f, xs){
|
|
var max, i$, ref$, len$, x;
|
|
max = xs[0];
|
|
for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {
|
|
x = ref$[i$];
|
|
if (f(x) > f(max)) {
|
|
max = x;
|
|
}
|
|
}
|
|
return max;
|
|
});
|
|
minimumBy = curry$(function(f, xs){
|
|
var min, i$, ref$, len$, x;
|
|
min = xs[0];
|
|
for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {
|
|
x = ref$[i$];
|
|
if (f(x) < f(min)) {
|
|
min = x;
|
|
}
|
|
}
|
|
return min;
|
|
});
|
|
scan = scanl = curry$(function(f, memo, xs){
|
|
var last, x;
|
|
last = memo;
|
|
return [memo].concat((function(){
|
|
var i$, ref$, len$, results$ = [];
|
|
for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) {
|
|
x = ref$[i$];
|
|
results$.push(last = f(last, x));
|
|
}
|
|
return results$;
|
|
}()));
|
|
});
|
|
scan1 = scanl1 = curry$(function(f, xs){
|
|
if (!xs.length) {
|
|
return;
|
|
}
|
|
return scan(f, xs[0], xs.slice(1));
|
|
});
|
|
scanr = curry$(function(f, memo, xs){
|
|
xs = xs.concat().reverse();
|
|
return scan(f, memo, xs).reverse();
|
|
});
|
|
scanr1 = curry$(function(f, xs){
|
|
if (!xs.length) {
|
|
return;
|
|
}
|
|
xs = xs.concat().reverse();
|
|
return scan(f, xs[0], xs.slice(1)).reverse();
|
|
});
|
|
slice = curry$(function(x, y, xs){
|
|
return xs.slice(x, y);
|
|
});
|
|
take = curry$(function(n, xs){
|
|
if (n <= 0) {
|
|
return xs.slice(0, 0);
|
|
} else {
|
|
return xs.slice(0, n);
|
|
}
|
|
});
|
|
drop = curry$(function(n, xs){
|
|
if (n <= 0) {
|
|
return xs;
|
|
} else {
|
|
return xs.slice(n);
|
|
}
|
|
});
|
|
splitAt = curry$(function(n, xs){
|
|
return [take(n, xs), drop(n, xs)];
|
|
});
|
|
takeWhile = curry$(function(p, xs){
|
|
var len, i;
|
|
len = xs.length;
|
|
if (!len) {
|
|
return xs;
|
|
}
|
|
i = 0;
|
|
while (i < len && p(xs[i])) {
|
|
i += 1;
|
|
}
|
|
return xs.slice(0, i);
|
|
});
|
|
dropWhile = curry$(function(p, xs){
|
|
var len, i;
|
|
len = xs.length;
|
|
if (!len) {
|
|
return xs;
|
|
}
|
|
i = 0;
|
|
while (i < len && p(xs[i])) {
|
|
i += 1;
|
|
}
|
|
return xs.slice(i);
|
|
});
|
|
span = curry$(function(p, xs){
|
|
return [takeWhile(p, xs), dropWhile(p, xs)];
|
|
});
|
|
breakList = curry$(function(p, xs){
|
|
return span(compose$(p, not$), xs);
|
|
});
|
|
zip = curry$(function(xs, ys){
|
|
var result, len, i$, len$, i, x;
|
|
result = [];
|
|
len = ys.length;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
i = i$;
|
|
x = xs[i$];
|
|
if (i === len) {
|
|
break;
|
|
}
|
|
result.push([x, ys[i]]);
|
|
}
|
|
return result;
|
|
});
|
|
zipWith = curry$(function(f, xs, ys){
|
|
var result, len, i$, len$, i, x;
|
|
result = [];
|
|
len = ys.length;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
i = i$;
|
|
x = xs[i$];
|
|
if (i === len) {
|
|
break;
|
|
}
|
|
result.push(f(x, ys[i]));
|
|
}
|
|
return result;
|
|
});
|
|
zipAll = function(){
|
|
var xss, res$, i$, to$, minLength, len$, xs, ref$, i, lresult$, j$, results$ = [];
|
|
res$ = [];
|
|
for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) {
|
|
res$.push(arguments[i$]);
|
|
}
|
|
xss = res$;
|
|
minLength = undefined;
|
|
for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) {
|
|
xs = xss[i$];
|
|
minLength <= (ref$ = xs.length) || (minLength = ref$);
|
|
}
|
|
for (i$ = 0; i$ < minLength; ++i$) {
|
|
i = i$;
|
|
lresult$ = [];
|
|
for (j$ = 0, len$ = xss.length; j$ < len$; ++j$) {
|
|
xs = xss[j$];
|
|
lresult$.push(xs[i]);
|
|
}
|
|
results$.push(lresult$);
|
|
}
|
|
return results$;
|
|
};
|
|
zipAllWith = function(f){
|
|
var xss, res$, i$, to$, minLength, len$, xs, ref$, i, results$ = [];
|
|
res$ = [];
|
|
for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) {
|
|
res$.push(arguments[i$]);
|
|
}
|
|
xss = res$;
|
|
minLength = undefined;
|
|
for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) {
|
|
xs = xss[i$];
|
|
minLength <= (ref$ = xs.length) || (minLength = ref$);
|
|
}
|
|
for (i$ = 0; i$ < minLength; ++i$) {
|
|
i = i$;
|
|
results$.push(f.apply(null, (fn$())));
|
|
}
|
|
return results$;
|
|
function fn$(){
|
|
var i$, ref$, len$, results$ = [];
|
|
for (i$ = 0, len$ = (ref$ = xss).length; i$ < len$; ++i$) {
|
|
xs = ref$[i$];
|
|
results$.push(xs[i]);
|
|
}
|
|
return results$;
|
|
}
|
|
};
|
|
at = curry$(function(n, xs){
|
|
if (n < 0) {
|
|
return xs[xs.length + n];
|
|
} else {
|
|
return xs[n];
|
|
}
|
|
});
|
|
elemIndex = curry$(function(el, xs){
|
|
var i$, len$, i, x;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
i = i$;
|
|
x = xs[i$];
|
|
if (x === el) {
|
|
return i;
|
|
}
|
|
}
|
|
});
|
|
elemIndices = curry$(function(el, xs){
|
|
var i$, len$, i, x, results$ = [];
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
i = i$;
|
|
x = xs[i$];
|
|
if (x === el) {
|
|
results$.push(i);
|
|
}
|
|
}
|
|
return results$;
|
|
});
|
|
findIndex = curry$(function(f, xs){
|
|
var i$, len$, i, x;
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
i = i$;
|
|
x = xs[i$];
|
|
if (f(x)) {
|
|
return i;
|
|
}
|
|
}
|
|
});
|
|
findIndices = curry$(function(f, xs){
|
|
var i$, len$, i, x, results$ = [];
|
|
for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
|
|
i = i$;
|
|
x = xs[i$];
|
|
if (f(x)) {
|
|
results$.push(i);
|
|
}
|
|
}
|
|
return results$;
|
|
});
|
|
module.exports = {
|
|
each: each,
|
|
map: map,
|
|
filter: filter,
|
|
compact: compact,
|
|
reject: reject,
|
|
remove: remove,
|
|
partition: partition,
|
|
find: find,
|
|
head: head,
|
|
first: first,
|
|
tail: tail,
|
|
last: last,
|
|
initial: initial,
|
|
empty: empty,
|
|
reverse: reverse,
|
|
difference: difference,
|
|
intersection: intersection,
|
|
union: union,
|
|
countBy: countBy,
|
|
groupBy: groupBy,
|
|
fold: fold,
|
|
fold1: fold1,
|
|
foldl: foldl,
|
|
foldl1: foldl1,
|
|
foldr: foldr,
|
|
foldr1: foldr1,
|
|
unfoldr: unfoldr,
|
|
andList: andList,
|
|
orList: orList,
|
|
any: any,
|
|
all: all,
|
|
unique: unique,
|
|
uniqueBy: uniqueBy,
|
|
sort: sort,
|
|
sortWith: sortWith,
|
|
sortBy: sortBy,
|
|
sum: sum,
|
|
product: product,
|
|
mean: mean,
|
|
average: average,
|
|
concat: concat,
|
|
concatMap: concatMap,
|
|
flatten: flatten,
|
|
maximum: maximum,
|
|
minimum: minimum,
|
|
maximumBy: maximumBy,
|
|
minimumBy: minimumBy,
|
|
scan: scan,
|
|
scan1: scan1,
|
|
scanl: scanl,
|
|
scanl1: scanl1,
|
|
scanr: scanr,
|
|
scanr1: scanr1,
|
|
slice: slice,
|
|
take: take,
|
|
drop: drop,
|
|
splitAt: splitAt,
|
|
takeWhile: takeWhile,
|
|
dropWhile: dropWhile,
|
|
span: span,
|
|
breakList: breakList,
|
|
zip: zip,
|
|
zipWith: zipWith,
|
|
zipAll: zipAll,
|
|
zipAllWith: zipAllWith,
|
|
at: at,
|
|
elemIndex: elemIndex,
|
|
elemIndices: elemIndices,
|
|
findIndex: findIndex,
|
|
findIndices: findIndices
|
|
};
|
|
function curry$(f, bound){
|
|
var context,
|
|
_curry = function(args) {
|
|
return f.length > 1 ? function(){
|
|
var params = args ? args.concat() : [];
|
|
context = bound ? context || this : this;
|
|
return params.push.apply(params, arguments) <
|
|
f.length && arguments.length ?
|
|
_curry.call(context, params) : f.apply(context, params);
|
|
} : f;
|
|
};
|
|
return _curry();
|
|
}
|
|
function in$(x, xs){
|
|
var i = -1, l = xs.length >>> 0;
|
|
while (++i < l) if (x === xs[i]) return true;
|
|
return false;
|
|
}
|
|
function compose$() {
|
|
var functions = arguments;
|
|
return function() {
|
|
var i, result;
|
|
result = functions[0].apply(this, arguments);
|
|
for (i = 1; i < functions.length; ++i) {
|
|
result = functions[i](result);
|
|
}
|
|
return result;
|
|
};
|
|
}
|
|
function not$(x){ return !x; } |