forked from mirrors/gecko-dev
--HG-- extra : commitid : F2OWKTvXUO4 extra : rebase_source : ec68631342e0edc59d77b6bab1cdc975ad175327
206 lines
3.7 KiB
JavaScript
206 lines
3.7 KiB
JavaScript
/*
|
|
Utilities
|
|
|
|
Copyright (C) 2010 - 2015 Glenn Jones. All Rights Reserved.
|
|
MIT License: https://raw.github.com/glennjones/microformat-shiv/master/license.txt
|
|
*/
|
|
|
|
var Modules = (function (modules) {
|
|
|
|
modules.utils = {
|
|
|
|
/**
|
|
* is the object a string
|
|
*
|
|
* @param {Object} obj
|
|
* @return {Boolean}
|
|
*/
|
|
isString: function( obj ) {
|
|
return typeof( obj ) === 'string';
|
|
},
|
|
|
|
/**
|
|
* is the object a number
|
|
*
|
|
* @param {Object} obj
|
|
* @return {Boolean}
|
|
*/
|
|
isNumber: function( obj ) {
|
|
return !isNaN(parseFloat( obj )) && isFinite( obj );
|
|
},
|
|
|
|
|
|
/**
|
|
* is the object an array
|
|
*
|
|
* @param {Object} obj
|
|
* @return {Boolean}
|
|
*/
|
|
isArray: function( obj ) {
|
|
return obj && !( obj.propertyIsEnumerable( 'length' ) ) && typeof obj === 'object' && typeof obj.length === 'number';
|
|
},
|
|
|
|
|
|
/**
|
|
* is the object a function
|
|
*
|
|
* @param {Object} obj
|
|
* @return {Boolean}
|
|
*/
|
|
isFunction: function(obj) {
|
|
return !!(obj && obj.constructor && obj.call && obj.apply);
|
|
},
|
|
|
|
|
|
/**
|
|
* does the text start with a test string
|
|
*
|
|
* @param {String} text
|
|
* @param {String} test
|
|
* @return {Boolean}
|
|
*/
|
|
startWith: function( text, test ) {
|
|
return(text.indexOf(test) === 0);
|
|
},
|
|
|
|
|
|
/**
|
|
* removes spaces at front and back of text
|
|
*
|
|
* @param {String} text
|
|
* @return {String}
|
|
*/
|
|
trim: function( text ) {
|
|
if(text && this.isString(text)){
|
|
return (text.trim())? text.trim() : text.replace(/^\s+|\s+$/g, '');
|
|
}else{
|
|
return '';
|
|
}
|
|
},
|
|
|
|
|
|
/**
|
|
* replaces a character in text
|
|
*
|
|
* @param {String} text
|
|
* @param {Int} index
|
|
* @param {String} character
|
|
* @return {String}
|
|
*/
|
|
replaceCharAt: function( text, index, character ) {
|
|
if(text && text.length > index){
|
|
return text.substr(0, index) + character + text.substr(index+character.length);
|
|
}else{
|
|
return text;
|
|
}
|
|
},
|
|
|
|
|
|
/**
|
|
* removes whitespace, tabs and returns from start and end of text
|
|
*
|
|
* @param {String} text
|
|
* @return {String}
|
|
*/
|
|
trimWhitespace: function( text ){
|
|
if(text && text.length){
|
|
var i = text.length,
|
|
x = 0;
|
|
|
|
// turn all whitespace chars at end into spaces
|
|
while (i--) {
|
|
if(this.isOnlyWhiteSpace(text[i])){
|
|
text = this.replaceCharAt( text, i, ' ' );
|
|
}else{
|
|
break;
|
|
}
|
|
}
|
|
|
|
// turn all whitespace chars at start into spaces
|
|
i = text.length;
|
|
while (x < i) {
|
|
if(this.isOnlyWhiteSpace(text[x])){
|
|
text = this.replaceCharAt( text, i, ' ' );
|
|
}else{
|
|
break;
|
|
}
|
|
x++;
|
|
}
|
|
}
|
|
return this.trim(text);
|
|
},
|
|
|
|
|
|
/**
|
|
* does text only contain whitespace characters
|
|
*
|
|
* @param {String} text
|
|
* @return {Boolean}
|
|
*/
|
|
isOnlyWhiteSpace: function( text ){
|
|
return !(/[^\t\n\r ]/.test( text ));
|
|
},
|
|
|
|
|
|
/**
|
|
* removes whitespace from text (leaves a single space)
|
|
*
|
|
* @param {String} text
|
|
* @return {Sring}
|
|
*/
|
|
collapseWhiteSpace: function( text ){
|
|
return text.replace(/[\t\n\r ]+/g, ' ');
|
|
},
|
|
|
|
|
|
/**
|
|
* does an object have any of its own properties
|
|
*
|
|
* @param {Object} obj
|
|
* @return {Boolean}
|
|
*/
|
|
hasProperties: function( obj ) {
|
|
var key;
|
|
for(key in obj) {
|
|
if( obj.hasOwnProperty( key ) ) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
|
|
|
|
/**
|
|
* a sort function - to sort objects in an array by a given property
|
|
*
|
|
* @param {String} property
|
|
* @param {Boolean} reverse
|
|
* @return {Int}
|
|
*/
|
|
sortObjects: function(property, reverse) {
|
|
reverse = (reverse) ? -1 : 1;
|
|
return function (a, b) {
|
|
a = a[property];
|
|
b = b[property];
|
|
if (a < b) {
|
|
return reverse * -1;
|
|
}
|
|
if (a > b) {
|
|
return reverse * 1;
|
|
}
|
|
return 0;
|
|
};
|
|
}
|
|
|
|
};
|
|
|
|
return modules;
|
|
|
|
} (Modules || {}));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|