107 lines
3.2 KiB
JavaScript
107 lines
3.2 KiB
JavaScript
/*jslint onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true */
|
|
"use strict";
|
|
(function () {
|
|
function typeOf(value) {
|
|
var s = typeof value;
|
|
if (s === 'object') {
|
|
if (value) {
|
|
if (typeof value.length === 'number' &&
|
|
!(value.propertyIsEnumerable('length')) &&
|
|
typeof value.splice === 'function') {
|
|
s = 'array';
|
|
}
|
|
} else {
|
|
s = 'null';
|
|
}
|
|
}
|
|
return s;
|
|
}
|
|
|
|
function isEmpty(o) {
|
|
var i, v;
|
|
if (typeOf(o) === 'object') {
|
|
for (i in o) { // fails jslint
|
|
v = o[i];
|
|
if (v !== undefined && typeOf(v) !== 'function') {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
if (!String.prototype.entityify) {
|
|
String.prototype.entityify = function () {
|
|
return this.replace(/&/g, "&").replace(/</g,
|
|
"<").replace(/>/g, ">");
|
|
};
|
|
}
|
|
|
|
if (!String.prototype.quote) {
|
|
String.prototype.quote = function () {
|
|
var c, i, l = this.length, o = '"';
|
|
for (i = 0; i < l; i += 1) {
|
|
c = this.charAt(i);
|
|
if (c >= ' ') {
|
|
if (c === '\\' || c === '"') {
|
|
o += '\\';
|
|
}
|
|
o += c;
|
|
} else {
|
|
switch (c) {
|
|
case '\b':
|
|
o += '\\b';
|
|
break;
|
|
case '\f':
|
|
o += '\\f';
|
|
break;
|
|
case '\n':
|
|
o += '\\n';
|
|
break;
|
|
case '\r':
|
|
o += '\\r';
|
|
break;
|
|
case '\t':
|
|
o += '\\t';
|
|
break;
|
|
default:
|
|
c = c.charCodeAt();
|
|
o += '\\u00' + Math.floor(c / 16).toString(16) +
|
|
(c % 16).toString(16);
|
|
}
|
|
}
|
|
}
|
|
return o + '"';
|
|
};
|
|
}
|
|
|
|
if (!String.prototype.supplant) {
|
|
String.prototype.supplant = function (o) {
|
|
return this.replace(/{([^{}]*)}/g,
|
|
function (a, b) {
|
|
var r = o[b];
|
|
return typeof r === 'string' || typeof r === 'number' ? r : a;
|
|
}
|
|
);
|
|
};
|
|
}
|
|
|
|
if (!String.prototype.trim) {
|
|
String.prototype.trim = function () {
|
|
return this.replace(/^\s*(\S*(?:\s+\S+)*)\s*$/, "$1");
|
|
};
|
|
}
|
|
|
|
// Boiler Plate
|
|
if ('undefined' === typeof module) { module = {}; }
|
|
module.exports = {
|
|
typeOf: typeOf,
|
|
isEmpty: isEmpty
|
|
};
|
|
if ('undefined' === typeof global) { global = window; }
|
|
global.typeOf = global.typeOf || typeOf;
|
|
global.isEmpty = global.isEmpty || isEmpty;
|
|
if ('undefined' === typeof provide) { provide = function () {}; }
|
|
provide('remedial');
|
|
}());
|