UNPKG

hu

Version:

Functional utility helper library

172 lines 6.01 kB
{ var _ns_ = { id: 'hu.lib.macros', doc: void 0 }; var hu_lib_function = require('./function'); var curry = hu_lib_function.curry; var compose = hu_lib_function.compose; var hu_lib_type = require('./type'); var isString = hu_lib_type.isString; var isArray = hu_lib_type.isArray; var isNumber = hu_lib_type.isNumber; var isUndef = hu_lib_type.isUndef; var isObject = hu_lib_type.isObject; } void 0; void 0; void 0; void 0; void 0; void 0; void 0; void 0; void 0; void 0; void 0; { var _ns_ = { id: 'hu.lib.function', doc: void 0 }; } var bindFn = Function.prototype.bind; var constant = exports.constant = function constant(x) { return function () { return x; }; }; var identify = exports.identify = constant; var lazy = exports.lazy = function lazy(lambda, defaultResult) { return function (task) { var args = Array.prototype.slice.call(arguments, 1); return function () { var resultø1 = task.apply(void 0, args); return resultø1 ? lambda.apply(void 0, args.concat([resultø1])) : lambda.apply(void 0, args.concat([defaultResult])); }.call(this); }; }; var apply = exports.apply = function apply(lambda, args) { return lambda.apply(lambda, args); }; var bind = exports.bind = function bind(lambda, ctx) { return bindFn.call(lambda, ctx); }; var partial = exports.partial = function partial(lambda) { var args = Array.prototype.slice.call(arguments, 1); return function () { var pargs = Array.prototype.slice.call(arguments, 0); return lambda.apply(void 0, args.concat(pargs)); }; }; var currier = function currier(lambda, arity, params) { return function curried() { var args = Array.prototype.slice.call(arguments, 0); return function () { var runø1 = Infinity === arity && args.length === 0; params ? args.unshift.apply(args, params) : void 0; return args.length >= arity || runø1 ? lambda.apply(void 0, args) : currier(lambda, arity, args); }.call(this); }; }; var curry = exports.curry = function curry(lambda) { var args = Array.prototype.slice.call(arguments, 1); return function () { var iargsø1 = lambda.length; var cargsø1 = args.length; var arityø1 = cargsø1 ? iargsø1 - cargsø1 : void 0; return currier(lambda, arityø1 || iargsø1, args); }.call(this); }; var compose = exports.compose = function compose(lambda) { var funcs = Array.prototype.slice.call(arguments, 1); return function () { var args = Array.prototype.slice.call(arguments, 0); return function () { var valø1 = lambda.apply(void 0, args); funcs.reduce(function (acc, lambda) { return acc && lambda ? valø1 = lambda(acc) : void 0; }, valø1); return valø1; }.call(this); }; }; var memoize = exports.memoize = function memoize(lambda, resolver) { return function () { var memoø1 = {}; return function () { var args = Array.prototype.slice.call(arguments, 0); return function () { var keyø1 = '@' + (resolver ? resolver.apply(void 0, args) : args[0]); return memoø1.hasOwnProperty(keyø1) ? memoø1[keyø1] : memoø1[keyø1] = lambda.apply(void 0, args); }.call(this); }; }.call(this); }; var wrap = exports.wrap = function wrap(lambda, to) { var args = Array.prototype.slice.call(arguments, 2); return function () { var cargs = Array.prototype.slice.call(arguments, 0); return to.apply(void 0, [lambda].concat(args, cargs)); }; }; var once = exports.once = function once(lambda) { return function () { var callø1 = true; var memoizedø1 = void 0; return function () { var args = Array.prototype.slice.call(arguments, 0); return callø1 ? (function () { callø1 = false; return memoizedø1 = lambda.apply(void 0, args); })() : memoizedø1; }; }.call(this); }; var times = exports.times = function times() { var args = Array.prototype.slice.call(arguments, 0); return curry(function (lambda, n) { return function () { var1 = 0; var2 = n || 1; var memoizedø1 = void 0; return function () { var args = Array.prototype.slice.call(arguments, 0); return1 < nø2 ? (function () { cø1 = cø1 + 1; return (cø1 === nø2 ? false : true) ? lambda.apply(void 0, args) : memoizedø1 = lambda.apply(void 0, args); })() : memoizedø1; }; }.call(this); }).apply(void 0, args); }; var throttle = exports.throttle = function throttle() { var args = Array.prototype.slice.call(arguments, 0); return curry(function (fn, ms) { return function () { var1 = 0; var msø2 = ms || 100; return function () { var args = Array.prototype.slice.call(arguments, 0); return1 === 0 || Date.now() - tø1 > msø2 ? function () { tø1 = Date.now(); fn.apply(void 0, args); return void 0; }.call(this) : void 0; }; }.call(this); }).apply(void 0, args); }; var defer = exports.defer = function defer(lambda, ms) { var args = Array.prototype.slice.call(arguments, 2); return setTimeout(function () { return lambda.apply(void 0, args); }, ms || 1000); }; var debounce = exports.debounce = function debounce() { var args = Array.prototype.slice.call(arguments, 0); return function () { var cargs = Array.prototype.slice.call(arguments, 0); return defer.apply(void 0, args.concat(cargs)); }; };