Created
May 4, 2015 15:22
-
-
Save PieterScheffers/6c95da32c091b8eb287d to your computer and use it in GitHub Desktop.
Javascript - Lib
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var lib = (function(window) { | |
"use strict"; | |
var lib = {}; | |
lib.array = (function() { | |
var a = {}; | |
a.select = function arraySelect(arr, callback) { | |
var newArr = []; | |
for (var i = 0; i < arr.length; i++) { | |
if( callback(arr[i]) ) { | |
newArr.push(arr[i]); | |
} | |
} | |
return newArr; | |
}; | |
a.map = function arrayMap(arr, callback) { | |
var newArr = []; | |
for (var i = 0; i < arr.length; i++) { | |
newArr.push( callback(arr[i]) ); | |
} | |
return newArr; | |
}; | |
a.removeDuplicates = function removeDuplicates(arr) { | |
}; | |
a.keys = (function arrayKeys(arr) { | |
if ( Object.keys ) { | |
return arr.keys; | |
} else { | |
return (function() { | |
var hasOwnProperty = Object.prototype.hasOwnProperty, | |
hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'), | |
dontEnums = [ | |
'toString', | |
'toLocaleString', | |
'valueOf', | |
'hasOwnProperty', | |
'isPrototypeOf', | |
'propertyIsEnumerable', | |
'constructor' | |
], | |
dontEnumsLength = dontEnums.length; | |
return function(obj) { | |
if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) { | |
throw new TypeError('Object.keys called on non-object'); | |
} | |
var result = [], prop, i; | |
for (prop in obj) { | |
if (hasOwnProperty.call(obj, prop)) { | |
result.push(prop); | |
} | |
} | |
if (hasDontEnumBug) { | |
for (i = 0; i < dontEnumsLength; i++) { | |
if (hasOwnProperty.call(obj, dontEnums[i])) { | |
result.push(dontEnums[i]); | |
} | |
} | |
} | |
return result; | |
}; | |
}()); | |
} | |
})(); | |
return a; | |
})(); | |
lib.browser = (function(window) { | |
var b = {}; | |
b.addEvent = function addEvent(element, type, handler) { | |
// IE8 and below --> no event parameter, window.event has the last event | |
var callback = function(event) { | |
event = event || window.event; | |
handler.call(element, event); | |
}; | |
// IE8 and below --> no addEventListener but attachEvent | |
if (element.addEventListener) { | |
element.addEventListener(type, callback, false); | |
}else if (element.attachEvent) { | |
element.attachEvent('on' + type, callback); | |
} else { | |
element['on' + type] = callback; | |
} | |
}; | |
b.dom = (function() { | |
var d = {}; | |
d.empty = function empty(element) { | |
while (element.firstChild) { | |
element.removeChild(element.firstChild); | |
} | |
}; | |
return d; | |
})(); | |
return b; | |
})(window); | |
lib.util = (function() { | |
var u = {}; | |
var TYPES = { | |
array: '[object Array]', | |
string: "[object String]", | |
object: "[object Object]", | |
date: "[object Date]", | |
regexp: "[object RegExp]", | |
number: "[object Number]" | |
}; | |
u.isDefined = function isDefined(variable) { | |
return (typeof variable !== 'undefined' && variable !== null); | |
}; | |
u.def = function def(variable, alt) { | |
return isDefined(variable) ? variable : alt; | |
}; | |
u.varType = function type(variable) { | |
return Object.prototype.toString.call(variable); | |
}; | |
u.is = function is(type, variable) { | |
return type === varType(variable); | |
}; | |
u.isObject = function isObject(variable) { | |
return is(TYPES.object, variable); | |
}; | |
u.isString = function isString(variable) { | |
}; | |
u.isDate = function isDate(variable) { | |
}; | |
u.isRegExp = function isRegExp(variable) { | |
return is(TYPES.regexp, variable); | |
}; | |
u.isArray = function isArray(variable) { | |
return is(TYPES.array, variable); | |
}; | |
u.isNumber = function isNumber(variable) { | |
return is(TYPES.number, variable); | |
}; | |
u.isFloat = function isFloat(variable) { | |
return +variable === variable && (!isFinite(variable) || !! (variable % 1)); | |
}; | |
u.isInt = function isInt(variable) { | |
return variable === +variable && isFinite(variable) && !(variable % 1); | |
}; | |
return u; | |
})(); | |
lib. | |
return lib; | |
})(window); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment