hu
Version:
Functional utility helper library
136 lines • 4.51 kB
JavaScript
{
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.object',
doc: void 0
};
var hu_lib_type = require('./type');
var isDate = hu_lib_type.isDate;
var isArray = hu_lib_type.isArray;
var isObject = hu_lib_type.isObject;
var isFn = hu_lib_type.isFn;
}
var hasOwn = Object.prototype.hasOwnProperty;
var has = exports.has = function has() {
var args = Array.prototype.slice.call(arguments, 0);
return curry(function (obj, prop) {
return hasOwn.call(obj, prop);
}).apply(void 0, args);
};
var keys = exports.keys = function keys(obj) {
return Object.keys(obj);
};
var vals = exports.vals = function vals(obj) {
return keys(obj).map(function (key) {
return (obj || 0)[key];
});
};
var extend = exports.extend = function extend(target) {
var origins = Array.prototype.slice.call(arguments, 1);
var obj = isObject(target) ? target : {};
origins.reduce(function (origin, o, index) {
isObject(origin) ? keys(origin).forEach(function (name) {
return obj[name] = origin[name];
}) : void 0;
return origins[index + 1];
}, origins[0]);
return obj;
};
var assign = exports.assign = extend;
var mixin = exports.mixin = function mixin(target) {
var origins = Array.prototype.slice.call(arguments, 1);
var obj = isObject(target) ? target : {};
origins.reduce(function (origin, _, index) {
isObject(origin) ? keys(origin).forEach(function (name) {
return isFn(origin[name]) ? obj[name] = origin[name] : void 0;
}) : void 0;
return origins[index + 1];
}, origins[0]);
return obj;
};
var clone = exports.clone = function clone(obj) {
return isArray(obj) ? obj.slice() : isObject(obj) ? extend({}, obj) : isDate(obj) ? new Date(obj.getTime()) : obj;
};
var keyValues = exports.keyValues = function keyValues(obj) {
return keys(obj).map(function (key) {
return [
key,
(obj || 0)[key]
];
});
};
var pairs = exports.pairs = keyValues;
var toObject = exports.toObject = function toObject() {
var pairs = Array.prototype.slice.call(arguments, 0);
return function loop() {
var recur = loop;
var keyValuesø1 = pairs;
var resultø1 = {};
do {
recur = keyValuesø1.length ? (function () {
resultø1[keyValuesø1[0]] = keyValuesø1[1];
return loop[0] = keyValuesø1.slice(2), loop[1] = resultø1, loop;
})() : resultø1;
} while (keyValuesø1 = loop[0], resultø1 = loop[1], recur === loop);
return recur;
}.call(this);
};
var __oproto__ = Object.prototype;
var merge = exports.merge = function merge() {
var args = Array.prototype.slice.call(arguments, 0);
return Object.create(__oproto__, args.reduce(function (descriptor, obj) {
isObject(obj) ? keys(obj).forEach(function (key) {
return (descriptor || 0)[key] = Object.getOwnPropertyDescriptor(obj, key);
}) : void 0;
return descriptor;
}, {}));
};
var map = exports.map = function map() {
var args = Array.prototype.slice.call(arguments, 0);
return curry(function (source, cb) {
return keys(source).reduce(function (target, key) {
target[key] = cb(source[key], key, source);
return target;
}, source);
}).apply(void 0, args);
};
var mapValues = exports.mapValues = map;
var filter = exports.filter = function filter() {
var args = Array.prototype.slice.call(arguments, 0);
return curry(function (source, cb) {
return function () {
var targetø1 = {};
keys(source).reduce(function (target, key) {
cb(source[key], key, source) ? target[key] = source[key] : void 0;
return target;
}, targetø1);
return targetø1;
}.call(this);
}).apply(void 0, args);
};
var filterValues = exports.filterValues = filter;