diff options
Diffstat (limited to 'toolkit/components/microformats/test/lib/utilities.js')
-rw-r--r-- | toolkit/components/microformats/test/lib/utilities.js | 206 |
1 files changed, 206 insertions, 0 deletions
diff --git a/toolkit/components/microformats/test/lib/utilities.js b/toolkit/components/microformats/test/lib/utilities.js new file mode 100644 index 000000000..c54714811 --- /dev/null +++ b/toolkit/components/microformats/test/lib/utilities.js @@ -0,0 +1,206 @@ +/* + 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 || {})); + + + + + + + |