123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- // Load modules
- // Declare internals
- var internals = {};
- exports.arrayToObject = function (source) {
- var obj = {};
- for (var i = 0, il = source.length; i < il; ++i) {
- if (typeof source[i] !== 'undefined') {
- obj[i] = source[i];
- }
- }
- return obj;
- };
- exports.merge = function (target, source) {
- if (!source) {
- return target;
- }
- if (typeof source !== 'object') {
- if (Array.isArray(target)) {
- target.push(source);
- }
- else {
- target[source] = true;
- }
- return target;
- }
- if (typeof target !== 'object') {
- target = [target].concat(source);
- return target;
- }
- if (Array.isArray(target) &&
- !Array.isArray(source)) {
- target = exports.arrayToObject(target);
- }
- var keys = Object.keys(source);
- for (var k = 0, kl = keys.length; k < kl; ++k) {
- var key = keys[k];
- var value = source[key];
- if (!target[key]) {
- target[key] = value;
- }
- else {
- target[key] = exports.merge(target[key], value);
- }
- }
- return target;
- };
- exports.decode = function (str) {
- try {
- return decodeURIComponent(str.replace(/\+/g, ' '));
- } catch (e) {
- return str;
- }
- };
- exports.compact = function (obj, refs) {
- if (typeof obj !== 'object' ||
- obj === null) {
- return obj;
- }
- refs = refs || [];
- var lookup = refs.indexOf(obj);
- if (lookup !== -1) {
- return refs[lookup];
- }
- refs.push(obj);
- if (Array.isArray(obj)) {
- var compacted = [];
- for (var i = 0, il = obj.length; i < il; ++i) {
- if (typeof obj[i] !== 'undefined') {
- compacted.push(obj[i]);
- }
- }
- return compacted;
- }
- var keys = Object.keys(obj);
- for (i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- obj[key] = exports.compact(obj[key], refs);
- }
- return obj;
- };
- exports.isRegExp = function (obj) {
- return Object.prototype.toString.call(obj) === '[object RegExp]';
- };
- exports.isBuffer = function (obj) {
- if (obj === null ||
- typeof obj === 'undefined') {
- return false;
- }
- return !!(obj.constructor &&
- obj.constructor.isBuffer &&
- obj.constructor.isBuffer(obj));
- };
|