added whole system from ola4doc

This commit is contained in:
Bachir Soussi Chiadmi
2017-12-14 17:06:06 +01:00
parent 9646c74be1
commit 0611418f7a
8725 changed files with 817688 additions and 2 deletions
+20
View File
@@ -0,0 +1,20 @@
'use strict';
var callable = require('../../object/valid-callable')
, aFrom = require('../../array/from')
, apply = Function.prototype.apply, call = Function.prototype.call
, callFn = function (arg, fn) { return call.call(fn, this, arg); };
module.exports = function (fn/*, …fnn*/) {
var fns, first;
if (!fn) callable(fn);
fns = [this].concat(aFrom(arguments));
fns.forEach(callable);
fns = fns.reverse();
first = fns[0];
fns = fns.slice(1);
return function (arg) {
return fns.reduce(callFn, apply.call(first, this, arguments));
};
};
+15
View File
@@ -0,0 +1,15 @@
'use strict';
var mixin = require('../../object/mixin')
, validFunction = require('../valid-function')
, re = /^\s*function\s*([\0-'\)-\uffff]+)*\s*\(([\0-\(\*-\uffff]*)\)\s*\{/;
module.exports = function () {
var match = String(validFunction(this)).match(re), fn;
fn = new Function('fn', 'return function ' + match[1].trim() + '(' +
match[2] + ') { return fn.apply(this, arguments); };')(this);
try { mixin(fn, this); } catch (ignore) {}
return fn;
};
+24
View File
@@ -0,0 +1,24 @@
'use strict';
var toPosInt = require('../../number/to-pos-integer')
, callable = require('../../object/valid-callable')
, defineLength = require('../_define-length')
, slice = Array.prototype.slice, apply = Function.prototype.apply
, curry;
curry = function self(fn, length, preArgs) {
return defineLength(function () {
var args = preArgs ?
preArgs.concat(slice.call(arguments, 0, length - preArgs.length)) :
slice.call(arguments, 0, length);
return (args.length === length) ? apply.call(fn, this, args) :
self(fn, length, args);
}, preArgs ? (length - preArgs.length) : length);
};
module.exports = function (/*length*/) {
var length = arguments[0];
return curry(callable(this),
isNaN(length) ? toPosInt(this.length) : toPosInt(length));
};
+12
View File
@@ -0,0 +1,12 @@
'use strict';
module.exports = {
compose: require('./compose'),
copy: require('./copy'),
curry: require('./curry'),
lock: require('./lock'),
not: require('./not'),
partial: require('./partial'),
spread: require('./spread'),
toStringTokens: require('./to-string-tokens')
};
+12
View File
@@ -0,0 +1,12 @@
'use strict';
var callable = require('../../object/valid-callable')
, apply = Function.prototype.apply;
module.exports = function (/*…args*/) {
var fn = callable(this)
, args = arguments;
return function () { return apply.call(fn, this, args); };
};
+14
View File
@@ -0,0 +1,14 @@
'use strict';
var callable = require('../../object/valid-callable')
, defineLength = require('../_define-length')
, apply = Function.prototype.apply;
module.exports = function () {
var fn = callable(this);
return defineLength(function () {
return !apply.call(fn, this, arguments);
}, fn.length);
};
+16
View File
@@ -0,0 +1,16 @@
'use strict';
var callable = require('../../object/valid-callable')
, aFrom = require('../../array/from')
, defineLength = require('../_define-length')
, apply = Function.prototype.apply;
module.exports = function (/*…args*/) {
var fn = callable(this)
, args = aFrom(arguments);
return defineLength(function () {
return apply.call(fn, this, args.concat(aFrom(arguments)));
}, fn.length - args.length);
};
+10
View File
@@ -0,0 +1,10 @@
'use strict';
var callable = require('../../object/valid-callable')
, apply = Function.prototype.apply;
module.exports = function () {
var fn = callable(this);
return function (args) { return apply.call(fn, this, args); };
};
+11
View File
@@ -0,0 +1,11 @@
'use strict';
var validFunction = require('../valid-function')
, re = new RegExp('^\\s*function[\\0-\'\\)-\\uffff]*' +
'\\(([\\0-\\(\\*-\\uffff]*)\\)\\s*\\{([\\0-\\uffff]*)\\}\\s*$');
module.exports = function () {
var data = String(validFunction(this)).match(re);
return { args: data[1], body: data[2] };
};
+44
View File
@@ -0,0 +1,44 @@
'use strict';
var toPosInt = require('../number/to-pos-integer')
, test = function (a, b) {}, desc, defineProperty
, generate, mixin;
try {
Object.defineProperty(test, 'length', { configurable: true, writable: false,
enumerable: false, value: 1 });
} catch (ignore) {}
if (test.length === 1) {
// ES6
desc = { configurable: true, writable: false, enumerable: false };
defineProperty = Object.defineProperty;
module.exports = function (fn, length) {
length = toPosInt(length);
if (fn.length === length) return fn;
desc.value = length;
return defineProperty(fn, 'length', desc);
};
} else {
mixin = require('../object/mixin');
generate = (function () {
var cache = [];
return function (l) {
var args, i = 0;
if (cache[l]) return cache[l];
args = [];
while (l--) args.push('a' + (++i).toString(36));
return new Function('fn', 'return function (' + args.join(', ') +
') { return fn.apply(this, arguments); };');
};
}());
module.exports = function (src, length) {
var target;
length = toPosInt(length);
if (src.length === length) return src;
target = generate(length)(src);
try { mixin(target, src); } catch (ignore) {}
return target;
};
}
+5
View File
@@ -0,0 +1,5 @@
'use strict';
module.exports = function (x) {
return function () { return x; };
};
+3
View File
@@ -0,0 +1,3 @@
'use strict';
module.exports = function (x) { return x; };
+15
View File
@@ -0,0 +1,15 @@
// Export all modules.
'use strict';
module.exports = {
'#': require('./#'),
constant: require('./constant'),
identity: require('./identity'),
invoke: require('./invoke'),
isArguments: require('./is-arguments'),
isFunction: require('./is-function'),
noop: require('./noop'),
pluck: require('./pluck'),
validFunction: require('./valid-function')
};
+15
View File
@@ -0,0 +1,15 @@
'use strict';
var isCallable = require('../object/is-callable')
, value = require('../object/valid-value')
, slice = Array.prototype.slice, apply = Function.prototype.apply;
module.exports = function (name/*, …args*/) {
var args = slice.call(arguments, 1), isFn = isCallable(name);
return function (obj) {
value(obj);
return apply.call(isFn ? name : obj[name], obj,
args.concat(slice.call(arguments, 1)));
};
};
+7
View File
@@ -0,0 +1,7 @@
'use strict';
var toString = Object.prototype.toString
, id = toString.call((function () { return arguments; }()));
module.exports = function (x) { return (toString.call(x) === id); };
+9
View File
@@ -0,0 +1,9 @@
'use strict';
var toString = Object.prototype.toString
, id = toString.call(require('./noop'));
module.exports = function (f) {
return (typeof f === "function") && (toString.call(f) === id);
};
+3
View File
@@ -0,0 +1,3 @@
'use strict';
module.exports = function () {};
+7
View File
@@ -0,0 +1,7 @@
'use strict';
var value = require('../object/valid-value');
module.exports = function (name) {
return function (o) { return value(o)[name]; };
};
+8
View File
@@ -0,0 +1,8 @@
'use strict';
var isFunction = require('./is-function');
module.exports = function (x) {
if (!isFunction(x)) throw new TypeError(x + " is not a function");
return x;
};