RAHHH
This commit is contained in:
34
backend/frontend/node_modules/tcomb/lib/match.js
generated
vendored
Normal file
34
backend/frontend/node_modules/tcomb/lib/match.js
generated
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
var assert = require('./assert');
|
||||
var isFunction = require('./isFunction');
|
||||
var isType = require('./isType');
|
||||
var Any = require('./Any');
|
||||
|
||||
module.exports = function match(x) {
|
||||
var type, guard, f, count;
|
||||
for (var i = 1, len = arguments.length; i < len; ) {
|
||||
type = arguments[i];
|
||||
guard = arguments[i + 1];
|
||||
f = arguments[i + 2];
|
||||
|
||||
if (isFunction(f) && !isType(f)) {
|
||||
i = i + 3;
|
||||
}
|
||||
else {
|
||||
f = guard;
|
||||
guard = Any.is;
|
||||
i = i + 2;
|
||||
}
|
||||
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
count = (count || 0) + 1;
|
||||
assert(isType(type), function () { return 'Invalid type in clause #' + count; });
|
||||
assert(isFunction(guard), function () { return 'Invalid guard in clause #' + count; });
|
||||
assert(isFunction(f), function () { return 'Invalid block in clause #' + count; });
|
||||
}
|
||||
|
||||
if (type.is(x) && guard(x)) {
|
||||
return f(x);
|
||||
}
|
||||
}
|
||||
assert.fail('Match error');
|
||||
};
|
||||
Reference in New Issue
Block a user