Socket
Socket
Sign inDemoInstall

fairmont

Package Overview
Dependencies
6
Maintainers
3
Versions
90
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.0-beta-13 to 1.0.0-beta-14

947

lib/iterator.js
// Generated by CoffeeScript 1.9.3
(function() {
var assert, async, call, curry, describe, promise, ref, ref1;
var assert, describe, ref,
slice = [].slice;
ref = require("./helpers"), assert = ref.assert, describe = ref.describe;
curry = require("./core").curry;
promise = require("when");
ref1 = (function() {
var call, lift, ref1;
ref1 = require("when/generator"), lift = ref1.lift, call = ref1.call;
return {
async: lift,
call: call
};
})(), call = ref1.call, async = ref1.async;
describe("Iterator functions", function(context) {
var _foldr, _unzip, add, all, any, assoc, average, binary, cat, collect, compact, delimit, detach, each, first, flatten, flip, fold, foldr, isDefined, isFunction, isIterable, isIterator, iterate, iterator, join, last, leave, lines, map, negate, partition, project, property, query, ref2, reject, repeat, sample, second, select, skip, split, sum, take, ternary, third, unzip, w, where, wrap, zip;
var $, Method, _flatten, add, all, any, assoc, async, asyncIterator, average, binary, cat, collect, compact, compose, curry, delimit, each, either, events, filter, first, flatten, fold, foldr, has, identity, isAsyncIterable, isAsyncIterator, isAsyncIteratorFunction, isDefined, isFunction, isGenerator, isIterable, isIterator, isIteratorFunction, isSource, iterator, iteratorFunction, join, lines, map, negate, partition, project, promise, property, query, reduce, reduceRight, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, reject, repeat, resolve, second, select, split, sum, take, takeN, ternary, unzip, where, zip;
isIterable = function(x) {
return x[Symbol.iterator] != null;
return (x != null ? x[Symbol.iterator] : void 0) != null;
};

@@ -28,53 +16,86 @@ context.test("isIterable", function() {

});
isAsyncIterable = function(x) {
return (x != null ? x[Symbol.asyncIterator] : void 0) != null;
};
isIterator = function(x) {
return (x != null ? x.next : void 0) != null;
return ((x != null ? x.next : void 0) != null) && isIterable(x);
};
isAsyncIterator = function(x) {
return ((x != null ? x.next : void 0) != null) && isAsyncIterable(x);
};
Method = require("./multimethods").Method;
iterator = Method.create();
isFunction = require("./type").isFunction;
wrap = require("./core").wrap;
iterator = function(x) {
if (isIterable(x)) {
return x[Symbol.iterator]();
} else if (isIterator(x)) {
return x;
} else if ((isFunction(x)) && (x.length === 0)) {
return {
next: x
};
} else {
return {
next: wrap(x)
};
}
};
context.test("isIterator", function() {
return assert(isIterator(iterator([1, 2, 3])));
Method.define(iterator, isFunction, function(f) {
f.next = f;
f[Symbol.iterator] = function() {
return this["this"];
};
return f;
});
context.test("iterator", function() {
return assert(isFunction((iterator([1, 2, 3])).next));
isGenerator = require("./type").isGenerator;
async = require("./generator").async;
Method.define(iterator, isGenerator, function(g) {
var f;
f = async(g);
f.next = f;
f[Symbol.asyncIterator] = function() {
return this["this"];
};
return f;
});
iterate = function(x) {
var f, i;
i = iterator(x);
f = async(function*() {
var done, ref2, value;
ref2 = i.next(), done = ref2.done, value = ref2.value;
return {
done: done,
value: (yield value)
};
});
f[Symbol.iterator] = wrap(i);
Method.define(iterator, isIterable, function(i) {
return i[Symbol.iterator]();
});
Method.define(iterator, isAsyncIterable, function(i) {
return i[Symbol.asyncIterator]();
});
asyncIterator = Method.create();
Method.define(asyncIterator, isFunction, function(f) {
f.next = f;
f[Symbol.asyncIterator] = function() {
return this["this"];
};
return f;
});
Method.define(iterator, isGenerator, function(g) {
var f;
f = async(g);
f.next = f;
f[Symbol.asyncIterator] = function() {
return this["this"];
};
return f;
});
Method = require("./multimethods").Method;
iteratorFunction = Method.create();
isFunction = require("./type").isFunction;
isIteratorFunction = function(f) {
return (isFunction(f)) && (isIterator(f));
};
context.test("iterate", function*() {
var i;
i = iterate([1, 2, 3]);
assert(isIterable(i));
assert(((yield i())).value === 1);
assert(((yield i())).value === 2);
assert(((yield i())).value === 3);
return assert(((yield i())).done);
isAsyncIteratorFunction = function(f) {
return (isFunction(f)) && (isAsyncIterator(f));
};
either = require("./logical").either;
Method.define(iteratorFunction, either(isIterable, isAsyncIterable), function(x) {
return iteratorFunction(iterator(x));
});
Method.define(iteratorFunction, either(isIterator, isAsyncIterator), function(i) {
return iterator((function() {
return i.next();
}));
});
either = require("./logical").either;
ref1 = require("./type"), isFunction = ref1.isFunction, isGenerator = ref1.isGenerator;
Method.define(iteratorFunction, either(isFunction, isGenerator), function(f) {
return iterator(f);
});
either = require("./logical").either;
identity = require("./core").identity;
Method.define(iteratorFunction, either(isIteratorFunction, isAsyncIteratorFunction), identity);
context.test("iteratorFunction", function() {
return assert(isIteratorFunction(iteratorFunction([1, 2, 3, 4, 5])));
});
repeat = function(x) {
return function() {
return iterator(function() {
return {

@@ -84,111 +105,187 @@ done: false,

};
};
});
};
collect = async(function*(i) {
var done, ref2, result, value;
i = iterate(i);
done = false;
result = [];
while (!done) {
$ = (function() {
return true;
});
Method = require("./multimethods").Method;
collect = Method.create();
Method.define(collect, $, function(x) {
return collect(iteratorFunction(x));
});
Method.define(collect, isIteratorFunction, function(i) {
var done, ref2, results, value;
results = [];
while (true) {
ref2 = i(), done = ref2.done, value = ref2.value;
if (done) {
break;
}
results.push(value);
}
return results;
});
async = require("./generator").async;
Method.define(collect, isAsyncIteratorFunction, async(function*(i) {
var done, ref2, results, value;
results = [];
while (true) {
ref2 = (yield i()), done = ref2.done, value = ref2.value;
if (!done) {
result.push(value);
if (done) {
break;
}
results.push(value);
}
return result;
});
context.test("collect", function*() {
return results;
}));
context.test("collect", function() {
var first;
first = require("./array").first;
return assert((first((yield collect([1, 2, 3, 4, 5])))) === 1);
return assert((first(collect([1, 2, 3, 4, 5]))) === 1);
});
each = async(function*(f, i) {
var done, ref2, value;
i = iterate(i);
done = false;
while (!done) {
ref2 = (yield i()), done = ref2.done, value = ref2.value;
if (!done) {
f(value);
map = Method.create();
Method.define(map, Function, $, function(f, x) {
return map(f, iteratorFunction(x));
});
Method.define(map, Function, isIteratorFunction, function(f, i) {
return iterator(function() {
var done, ref2, value;
ref2 = i(), done = ref2.done, value = ref2.value;
if (done) {
return {
done: done
};
} else {
return {
done: done,
value: f(value)
};
}
}
return void 0;
});
});
map = curry(function(f, i) {
i = iterate(i);
return async(function*() {
Method.define(map, Function, isAsyncIteratorFunction, function(f, i) {
iterator(function*() {
var done, ref2, value;
ref2 = (yield i()), done = ref2.done, value = ref2.value;
if (!done) {
if (done) {
return {
done: done,
value: (yield promise(f(value)))
done: done
};
} else {
return {
done: done
done: done,
value: f(value)
};
}
});
return map = curry(binary(map));
});
context.test("map", function() {
var double, x;
double = function(x) {
return x * 2;
};
x = collect(map(double, [1, 2, 3]));
return assert(x[1] === 4);
var i;
i = map(Math.sqrt, [1, 4, 9]);
assert(i().value === 1);
assert(i().value === 2);
assert(i().value === 3);
return assert(i().done);
});
ternary = require("./core").ternary;
fold = curry(ternary(async(function*(x, f, i) {
var done, ref2, value;
i = iterate(i);
done = false;
while (!done) {
ref2 = (yield promise(i())), done = ref2.done, value = ref2.value;
if (!done) {
x = f(x, value);
ref2 = require("./core"), curry = ref2.curry, compose = ref2.compose, binary = ref2.binary;
each = curry(binary(compose(collect, map)));
context.test("each", function() {
var last;
last = require("./array").last;
return assert((last(each((function(x) {
return x + 1;
}), [1, 2, 3, 4, 5]))) === 6);
});
ref3 = require("./core"), curry = ref3.curry, ternary = ref3.ternary;
fold = Method.create();
Method.define(fold, $, Function, $, function(x, f, y) {
return fold(x, f, iteratorFunction(y));
});
Method.define(fold, $, Function, isIteratorFunction, function(x, f, i) {
var done, ref4, value;
while (true) {
ref4 = i(), done = ref4.done, value = ref4.value;
if (done) {
break;
}
x = f(x, value);
}
return x;
})));
});
Method.define(fold, $, Function, isAsyncIteratorFunction, async(function*(x, f, i) {
var done, ref4, value;
while (true) {
ref4 = (yield i()), done = ref4.done, value = ref4.value;
if (done) {
break;
}
x = f(x, value);
}
return x;
}));
reduce = fold = curry(ternary(fold));
add = require("./numeric").add;
context.test("fold", function*() {
return assert(((yield fold(0, add, [1, 2, 3, 4, 5]))) === 15);
context.test("fold/reduce", function() {
var sum;
sum = fold(0, add);
return assert((sum([1, 2, 3, 4, 5])) === 15);
});
flip = require("./core").flip;
detach = require("./object").detach;
_foldr = flip(ternary(detach(Array.prototype.reduceRight)));
foldr = curry(ternary(async(function*(x, f, i) {
return _foldr(x, f, (yield collect(iterate(i))));
})));
context.test("foldr", function*() {
return assert(((yield foldr("", add, "panama"))) === "amanap");
ref4 = require("./core"), curry = ref4.curry, ternary = ref4.ternary;
foldr = Method.create();
Method.define(foldr, $, Function, $, function(x, f, y) {
return foldr(x, f, iteratorFunction(y));
});
select = curry(function(f, i) {
var done;
i = iterate(i);
done = false;
return async(function*() {
var found, ref2, value;
if (!done) {
found = false;
while (!(done || found)) {
ref2 = (yield promise(i())), value = ref2.value, done = ref2.done;
if (!done) {
found = f(value);
}
Method.define(foldr, $, Function, isIteratorFunction, function(x, f, i) {
return (collect(i)).reduceRight(f, x);
});
Method.define(foldr, $, Function, isAsyncIteratorFunction, async(function*(x, f, i) {
return ((yield collect(i))).reduceRight(f, x);
}));
reduceRight = foldr = curry(ternary(foldr));
add = require("./numeric").add;
context.test("foldr/reduceRight", function() {
return assert((foldr("", add, "panama")) === "amanap");
});
select = Method.create();
Method.define(select, Function, $, function(f, x) {
return select(f, iteratorFunction(x));
});
Method.define(select, Function, isIteratorFunction, function(f, i) {
return iterator(function() {
var done, ref5, value;
while (true) {
ref5 = i(), done = ref5.done, value = ref5.value;
if (done || (f(value))) {
break;
}
if (found) {
return {
done: done,
value: value
};
} else {
return {
done: done
};
}
if (done) {
return {
done: done
};
} else {
return {
value: value,
done: done
};
}
});
});
Method.define(select, Function, isIteratorFunction, function(f, i) {
return iterator(function() {
var done, ref5, value;
while (true) {
ref5 = i(), done = ref5.done, value = ref5.value;
if (done || (f(value))) {
break;
}
}
if (done) {
return {
done: done
};
} else {
return {
value: value,
done: done

@@ -199,7 +296,10 @@ };

});
context.test("select", function*() {
var odd, second;
second = require("./array").second;
ref5 = require("./core"), binary = ref5.binary, curry = ref5.curry;
select = filter = curry(binary(select));
context.test("select", function() {
var i, odd;
odd = require("./numeric").odd;
return assert((second((yield collect(select(odd, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))))) === 3);
i = select(odd, [1, 2, 3, 4, 5, 6, 7, 8, 9]);
assert(i().value === 1);
return assert(i().value === 3);
});

@@ -210,123 +310,162 @@ negate = require("./logical").negate;

});
context.test("reject", function*() {
var odd, second;
second = require("./array").second;
context.test("reject", function() {
var i, odd;
odd = require("./numeric").odd;
return assert((second((yield collect(reject(odd, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))))) === 2);
i = reject(odd, [1, 2, 3, 4, 5, 6, 7, 8, 9]);
assert(i().value === 2);
return assert(i().value === 4);
});
binary = require("./core").binary;
any = curry(binary(async(function*(f, i) {
var done, found, ref2, value;
i = iterate(i);
done = false;
found = false;
while (!(done || found)) {
ref2 = (yield promise(i())), done = ref2.done, value = ref2.value;
if (!done) {
found = f(value);
any = Method.create();
Method.define(any, Function, $, function(f, x) {
return any(f, iteratorFunction(x));
});
Method.define(any, Function, isIteratorFunction, function(f, i) {
var done, ref6, value;
while (true) {
ref6 = i(), done = ref6.done, value = ref6.value;
if (done || (f(value))) {
break;
}
}
return found;
})));
context.test("any", function*() {
var count, odd, test;
return !done;
});
Method.define(any, Function, isAsyncIteratorFunction, async(function*(f, i) {
var done, ref6, value;
while (true) {
ref6 = (yield i()), done = ref6.done, value = ref6.value;
if (done || (f(value))) {
break;
}
}
return !done;
}));
ref6 = require("./core"), curry = ref6.curry, binary = ref6.binary;
any = curry(binary(any));
context.test("any", function() {
var odd;
odd = require("./numeric").odd;
count = 0;
test = function(x) {
count++;
return odd(x);
};
assert((yield any(test, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])));
return assert(count === 2);
assert(any(odd, [1, 2, 3, 4, 5, 6, 7, 8, 9]));
return assert(!(any(odd, [2, 4, 6])));
});
all = curry(binary(async(function*(f, i) {
return !(yield any(negate(f), i));
})));
context.test("all", function*() {
all = Method.create();
Method.define(all, Function, $, function(f, x) {
return all(f, iteratorFunction(x));
});
Method.define(all, Function, isIteratorFunction, function(f, i) {
return !any(negate(f), i);
});
Method.define(all, Function, isAsyncIteratorFunction, async(function*(f, i) {
return !((yield any(negate(f), i)));
}));
all = curry(binary(all));
context.test("all", function() {
var odd;
odd = require("./numeric").odd;
assert(!((yield all(odd, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))));
return assert((yield all((function() {
return true;
}), "foobar")));
assert(!(all(odd, [1, 2, 3, 4, 5, 6, 7, 8, 9])));
return assert(all(odd, [1, 3, 5]));
});
zip = function(i, j) {
i = iterate(i);
j = iterate(j);
return async(function*() {
var _i, _j;
if ((_i = (yield i())).done || (_j = j()).done) {
zip = Method.create();
Method.define(zip, Function, $, $, function(f, x, y) {
return zip(f, iteratorFunction(x), iteratorFunction(y));
});
Method.define(zip, Function, isIteratorFunction, isIteratorFunction, function(f, i, j) {
return iterator(function() {
var x, y;
x = i();
y = j();
if (!x.done && !y.done) {
return {
done: true
value: f(x.value, y.value),
done: false
};
} else {
return {
done: false,
value: [_i.value, _j.value]
done: true
};
}
});
};
context.test("zip", function*() {
var ref2, second, third;
ref2 = require("./array"), second = ref2.second, third = ref2.third;
return assert((second(third((yield collect(zip([1, 2, 3], [4, 5, 6])))))) === 6);
});
_unzip = function(arg, arg1) {
var a, ax, b, bx;
ax = arg[0], bx = arg[1];
a = arg1[0], b = arg1[1];
ax.push(a);
bx.push(b);
return [ax, bx];
context.test("zip", function() {
var i, pair;
pair = function(x, y) {
return [x, y];
};
i = zip(pair, [1, 2, 3], [4, 5, 6]);
assert(i().value[0] === 1);
assert(i().value[1] === 5);
assert(i().value[0] === 3);
return assert(i().done);
});
unzip = function(f, i) {
return fold([[], []], f, i);
};
unzip = function(i) {
return fold([[], []], _unzip, i);
};
context.test("unzip", function() {
var first, toString;
first = require("./array").first;
toString = require("./string").toString;
return assert((fold("", add, first(collect(unzip(zip("panama", "canary")))))) === "panama");
var pair, unpair;
pair = function(x, y) {
return [x, y];
};
unpair = function(arg, arg1) {
var a, ax, b, bx;
ax = arg[0], bx = arg[1];
a = arg1[0], b = arg1[1];
ax.push(a);
bx.push(b);
return [ax, bx];
};
return assert((unzip(unpair, zip(pair, "panama", "canary")))[0][0] === "p");
});
ref2 = require("./array"), first = ref2.first, second = ref2.second;
assoc = async(function(i) {
return (function*(i) {
var done, ref3, result, value;
result = {};
while (!done) {
ref3 = (yield i()), done = ref3.done, value = ref3.value;
if (value != null) {
result[first(value)] = second(value);
}
ref7 = require("./array"), first = ref7.first, second = ref7.second;
assoc = Method.create();
Method.define(assoc, $, function(x) {
return assoc(iteratorFunction(x));
});
Method.define(assoc, isIteratorFunction, function(i) {
var done, ref8, result, value;
result = {};
while (true) {
ref8 = i(), done = ref8.done, value = ref8.value;
if (done) {
break;
}
return result;
})(iterate(i));
result[first(value)] = second(value);
}
return result;
});
context.test("assoc", function*() {
return assert(((yield assoc([["foo", 1], ["bar", 2]]))).foo === 1);
Method.define(assoc, isAsyncIteratorFunction, function*(i) {
var done, ref8, result, value;
result = {};
while (true) {
ref8 = (yield i()), done = ref8.done, value = ref8.value;
if (done) {
break;
}
result[first(value)] = second(value);
}
return result;
});
context.test("assoc", function() {
return assert((assoc([["foo", 1], ["bar", 2]])).foo === 1);
});
property = require("./object").property;
w = require("./string").w;
project = curry(binary(async(function*(p, i) {
return (yield map(property(p), i));
})));
third = require("./array").third;
curry = require("./core").curry;
project = curry(function(p, i) {
return map(property(p), i);
});
context.test("project", function() {
return assert((third(collect(project("length", w("one two three"))))) === 5);
var i, w;
w = require("./string").w;
i = project("length", w("one two three"));
return assert(i().value === 3);
});
flatten = function(ax) {
return fold([], (function(r, a) {
if (a.forEach != null) {
r.push.apply(r, flatten(a));
} else {
r.push(a);
}
return r;
}), ax);
_flatten = function(ax, a) {
if (isIterable(a)) {
return ax.concat(flatten(a));
} else {
ax.push(a);
return ax;
}
};
flatten = fold([], _flatten);
context.test("flatten", function() {
return (function*(data) {
return assert((second((yield flatten(data)))) === 2);
})([1, [2, 3], 4, [5, [6, 7]]]);
return assert((flatten([1, [2, 3], 4, [5, [6, 7]]]))[1] === 2);
});

@@ -336,16 +475,24 @@ isDefined = require("./type").isDefined;

context.test("compact", function() {
return assert((second(collect(compact([1, null, null, 2])))) === 2);
var i;
i = compact([1, null, null, 2]);
assert(i().value === 1);
return assert(i().value === 2);
});
partition = curry(function(n, i) {
var done;
i = iterate(i);
done = false;
return async(function*() {
var batch, ref3, value;
partition = Method.create();
Method.define(partition, Number, $, function(n, x) {
return partition(n, iteratorFunction(x));
});
Method.define(partition, Number, isIteratorFunction, function(n, i) {
return iterator(function() {
var batch, done, ref8, value;
batch = [];
while (!(done || batch.length === n)) {
ref3 = (yield promise(i())), done = ref3.done, value = ref3.value;
if (!done) {
batch.push(value);
while (true) {
ref8 = i(), done = ref8.done, value = ref8.value;
if (done) {
break;
}
batch.push(value);
if (batch.length === n) {
break;
}
}

@@ -364,28 +511,23 @@ if (done) {

});
context.test("partition", function() {
var ref3;
ref3 = require("./array"), first = ref3.first, second = ref3.second;
return assert((first(second(collect(partition(2, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))))) === 2);
});
take = curry(function(n, i) {
var done;
i = iterate(i);
done = false;
return async(function*() {
var ref3, value;
if (!(done || n-- === 0)) {
ref3 = (yield promise(i())), done = ref3.done, value = ref3.value;
Method.define(partition, Number, isAsyncIteratorFunction, function(n, i) {
return iterator(function*() {
var batch, done, ref8, value;
batch = [];
while (true) {
ref8 = (yield i()), done = ref8.done, value = ref8.value;
if (done) {
return {
done: done
};
} else {
return {
done: done,
value: value
};
break;
}
batch.push(value);
if (batch.length === n) {
break;
}
}
if (done) {
return {
done: done
};
} else {
done = true;
return {
value: batch,
done: done

@@ -396,26 +538,8 @@ };

});
last = require("./array").last;
context.test("take", function() {
return assert((last(collect(take(3, [1, 2, 3, 4, 5])))) === 3);
context.test("partition", function() {
var i;
i = partition(2, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
assert(i().value[0] === 0);
return assert(i().value[0] === 2);
});
leave = curry(binary(async(function*(n, i) {
return ((yield collect(i))).slice(0, -n);
})));
context.test("leave", function() {
return assert((last(leave(3, [1, 2, 3, 4, 5]))) === 2);
});
skip = curry(binary(async(function*(n, i) {
return ((yield collect(i))).slice(n);
})));
context.test("skip", function() {
return assert((first(skip(3, [1, 2, 3, 4, 5]))) === 4);
});
sample = curry(function(n, i) {
var _sample;
_sample = function() {
return Math.random() < n;
};
return select(_sample, i);
});
context.test("sample");
add = require("./numeric").add;

@@ -438,5 +562,52 @@ sum = fold(0, add);

});
take = Method.create();
Method.define(take, Function, $, function(f, x) {
return take(f, iteratorFunction(x));
});
Method.define(take, Function, isIteratorFunction, function(f, i) {
return iterator(function() {
var done, ref8, value;
if (!done) {
ref8 = i(), done = ref8.done, value = ref8.value;
if (!done && (f(value))) {
return {
value: value,
done: false
};
} else {
return {
done: true
};
}
}
});
});
take = curry(binary(take));
context.test("take");
takeN = (function() {
var f;
f = function(n, i) {
if (i == null) {
i = 0;
}
return function() {
return i++ < n;
};
};
return function(n, i) {
return take(f(n), i);
};
})();
context.test("takeN", function() {
var i;
i = takeN(3, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
assert(i().value === 0);
assert(i().value === 1);
assert(i().value === 2);
return assert(i().done);
});
cat = require("./array").cat;
join = fold("", add);
context.test("join", function() {
var w;
w = require("./string").w;

@@ -457,2 +628,3 @@ return assert((join(w("one two three"))) === "onetwothree");

context.test("delimit", function() {
var w;
w = require("./string").w;

@@ -462,3 +634,2 @@ return assert((delimit(", ", w("one two three"))) === "one, two, three");

query = require("./object").query;
cat = require("./array").cat;
where = curry(function(example, i) {

@@ -468,35 +639,96 @@ return select(query(example), i);

context.test("where", function() {
return assert((collect(where(["a", 1], zip(repeat("a"), [1, 2, 3, 1, 2, 3])))).length === 2);
var pair;
pair = function(x, y) {
return [x, y];
};
return assert((collect(where(["a", 1], zip(pair, repeat("a"), [1, 2, 3, 1, 2, 3])))).length === 2);
});
split = curry(function(f, i) {
var done, lines;
split = Method.create();
Method.define(split, Function, $, function(f, x) {
return split(f, iteratorFunction(x));
});
Method.define(split, Function, isIteratorFunction, function(f, i) {
var lines, remainder;
lines = [];
done = false;
return async(function*() {
var k, len, line, ref3, ref4, value;
if (done) {
({
done: done
});
} else if (lines.length > 0) {
lines.shift();
remainder = "";
return iterator(function() {
var done, k, last, ref8, ref9, value;
if (lines.length > 0) {
return {
value: lines.shift(),
done: false
};
} else {
ref3 = (yield i()), value = ref3.value, done = ref3.done;
ref8 = i(), value = ref8.value, done = ref8.done;
if (!done) {
ref4 = f(value);
for (k = 0, len = ref4.length; k < len; k++) {
line = ref4[k];
if (value !== "") {
lines.push({
value: line,
done: false
});
}
}
ref9 = f(value), first = ref9[0], lines = 3 <= ref9.length ? slice.call(ref9, 1, k = ref9.length - 1) : (k = 1, []), last = ref9[k++];
first = remainder + first;
remainder = last;
return {
value: first,
done: done
};
} else if (remainder !== "") {
value = remainder;
remainder = "";
return {
value: value,
done: false
};
} else {
return {
done: done
};
}
}
return lines.shift();
});
});
context.test("split");
Method.define(split, Function, isIteratorFunction, function(f, i) {
var lines, remainder;
lines = [];
remainder = "";
return iterator(function*() {
var done, k, last, ref8, ref9, value;
if (lines.length > 0) {
return {
value: lines.shift(),
done: false
};
} else {
ref8 = (yield i()), value = ref8.value, done = ref8.done;
if (!done) {
ref9 = f(value), first = ref9[0], lines = 3 <= ref9.length ? slice.call(ref9, 1, k = ref9.length - 1) : (k = 1, []), last = ref9[k++];
first = remainder + first;
remainder = last;
return {
value: first,
done: done
};
} else if (remainder !== "") {
value = remainder;
remainder = "";
return {
value: value,
done: false
};
} else {
return {
done: done
};
}
}
});
});
split = curry(binary(split));
context.test("split", function() {
var i;
i = split((function(x) {
return x.split("\n");
}), ["one\ntwo\n", "three\nfour"]);
assert(i().value === "one");
assert(i().value === "two");
assert(i().value === "three");
assert(i().value === "four");
return assert(i().done);
});
lines = split(function(s) {

@@ -515,17 +747,89 @@ return s.split("\n");

});
ref8 = require("when"), promise = ref8.promise, reject = ref8.reject, resolve = ref8.resolve;
has = require("./object").has;
events = Method.create();
isSource = compose(isFunction, property("on"));
Method.define(events, String, isSource, function(name, source) {
return events({
name: name,
end: "end",
error: "error"
}, source);
});
Method.define(events, Object, isSource, function(map, source) {
var dequeue, done, end, enqueue, error, name, pending, resolved;
name = map.name, end = map.end, error = map.error;
done = false;
pending = [];
resolved = [];
enqueue = function(x) {
var ref9;
if (pending.length === 0) {
return resolved.push(x);
} else {
ref9 = pending.shift(), resolve = ref9.resolve, reject = ref9.reject;
return x.then(resolve)["catch"](reject);
}
};
dequeue = function() {
if (resolved.length === 0) {
if (!done) {
return promise(function(resolve, reject) {
return pending.push({
resolve: resolve,
reject: reject
});
});
} else {
return resolve({
done: done
});
}
} else {
return resolved.shift();
}
};
source.on(name, function(value) {
return enqueue(resolve({
done: done,
value: value
}));
});
source.on(end, function() {
return done = true;
});
source.on(error, function() {
return enqueue(reject(error));
});
return asyncIterator(dequeue);
});
events = curry(binary(events));
context.test("events", function*() {
var createReadStream, i;
createReadStream = require("fs").createReadStream;
i = events("data", createReadStream("test/lines.txt"));
assert(((yield i())).value.toString() === "one\ntwo\nthree\n");
return console.log((yield i()));
});
return module.exports = {
isIterable: isIterable,
isAsyncIterable: isAsyncIterable,
iterator: iterator,
isIterator: isIterator,
iterate: iterate,
isAsyncIterator: isAsyncIterator,
iteratorFunction: iteratorFunction,
isIteratorFunction: isIteratorFunction,
isAsyncIteratorFunction: isAsyncIteratorFunction,
collect: collect,
map: map,
fold: fold,
reduce: reduce,
foldr: foldr,
reduceRight: reduceRight,
select: select,
reject: reject,
filter: filter,
any: any,
all: all,
zip: zip,
unzip: unzip,
assoc: assoc,

@@ -536,6 +840,2 @@ project: project,

partition: partition,
take: take,
leave: leave,
skip: skip,
sample: sample,
sum: sum,

@@ -546,3 +846,6 @@ average: average,

where: where,
repeat: repeat
lines: lines,
split: split,
take: take,
takeN: takeN
};

@@ -549,0 +852,0 @@ });

// Generated by CoffeeScript 1.9.3
(function() {
var Method, assert, create, define, describe, dispatch, ref,
var Method, assert, create, define, describe, dispatch, lookup, ref,
slice = [].slice,

@@ -8,3 +8,3 @@ extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },

dispatch = function(method, ax) {
lookup = function(method, ax) {
var arg, best, bi, bx, f, i, len, p, ref, ref1, term, ti, tx;

@@ -36,2 +36,5 @@ best = {

p += 5;
} else {
p = 0;
break;
}

@@ -52,26 +55,18 @@ } else {

if (best.f.constructor === Function) {
return best.f.apply(best, ax);
return best.f;
} else {
return best.f;
return function() {
return best.f;
};
}
};
create = function() {
var arg, args, description, m, map;
args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
args = args.slice(0, 2);
map = description = void 0;
while ((arg = args.shift())) {
switch (arg.constructor) {
case String:
if (description == null) {
description = arg;
}
break;
case Function:
if (map == null) {
map = arg;
}
}
}
dispatch = function(method, ax) {
var f;
f = lookup(method, ax);
return f.apply(null, ax);
};
create = function(options) {
var k, m, v;
m = function() {

@@ -83,7 +78,11 @@ var args;

m.entries = [];
m["default"] = function() {
throw new TypeError("No method matches arguments.");
};
m.map = map;
m.description = description;
for (k in options) {
v = options[k];
m[k] = v;
}
if (m["default"] == null) {
m["default"] = function() {
throw new TypeError("No method matches arguments.");
};
}
return m;

@@ -100,3 +99,4 @@ };

create: create,
define: define
define: define,
lookup: lookup
};

@@ -113,3 +113,5 @@

var fib;
fib = Method.create("Fibonacci sequence");
fib = Method.create({
description: "Fibonacci sequence"
});
Method.define(fib, (function(n) {

@@ -172,4 +174,6 @@ return n <= 0;

var bar;
bar = Method.create(function(x) {
return [x];
bar = Method.create({
map: function(x) {
return [x];
}
});

@@ -228,7 +232,19 @@ Method.define(bar, String, function() {

});
return context.test("Multimethods are functions, too", function() {
context.test("Multimethods are functions", function() {
return assert(Method.create().constructor === Function);
});
return context.test("Lookups", function() {
var f, foo;
foo = Method.create();
Method.define(foo, Number, function(x) {
return x + x;
});
Method.define(foo, String, function(x) {
return false;
});
f = Method.lookup(foo, [7]);
return assert((f(7)) === 14);
});
});
}).call(this);
{
"name": "fairmont",
"version": "1.0.0-beta-13",
"version": "1.0.0-beta-14",
"description": "A collection of useful functions and utilities.",

@@ -5,0 +5,0 @@ "files": [

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc