Tie Library
The Utility Belt Javascript Library
by ipark
JavaScript
//------------------------------------------------
// Tie Utility Belt Javascript Library
// It is written followed by underscore API 0.1.0, but internal implementation was by my self
//
// - History
// 1. 0.1.0 (Draft) 2016. 04. 19.(Tue) ~ 2016. 04. 24.(Sun)
//
(function tie(window) {
var tie = {
name: 'Tie - Utility Belt Library',
version: '0.1.0'
};
var prevOwner = window.tie;
window.tie = tie;
var native = Array.prototype;
//------------------------------------------------
// Internal Utility Functions
//
tie.extend = function extend(dest, src) {
if (isUndefined(src)) {
src = dest;
dest = this;
}
tie.each(src, function(key, value) {
dest[key] = src[key];
});
return dest;
}
function toArray(obj) {
return Array.prototype.slice.call(obj);
}
function toObject(array, valueFn) {
var obj = {};
tie.each(array, function(item) {
obj[item] = valueFn(item);
});
return obj;
}
function isEqual(left, right) {
return left === right;
}
function isArray(list) {
return (!!list.length &&
Number.isInteger(list.length) &&
isEqual(Object.prototype.toString.call(list), '[object Array]'));
}
function isObject(obj) {
return (isEqual(obj.toString(), '[object Object]'));
}
function inverse(fn) {
return function() {
var args = toArray(arguments);
return !fn.apply(fn, args);
};
}
var FALSY = [false, null, 0, '', undefined];
function isFalsy(value) {
return tie.include(FALSY, value) || Number.isNaN(value);
}
var isTruthy = inverse(isFalsy);
function isUndefeind(value) {
return isEqual(value, undefined);
}
function binarySearch(list, value, iterator) {
iterator = iterator || Number;
var low = 0, high = list.length, mid;
var src, diff = iterator(value);
while (low < high) {
mid = Math.floor((low + high) / 2);
src = iterator(list[mid]);
if...