UNPKG

wepy-ant

Version:

参见:[小程序框架wepy](https://github.com/wepyjs/wepy)

238 lines (206 loc) 8.16 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; exports.default = { $isEmpty: function $isEmpty(obj) { return Object.keys(obj).length === 0; }, $isEqual: function $isEqual(a, b, aStack, bStack) { if (a === b) return a !== 0 || 1 / a === 1 / b; if (a !== a) return b !== b; if (!a || !b) return a === b; var type = typeof a === 'undefined' ? 'undefined' : _typeof(a); if (type !== 'function' && type !== 'object' && (typeof b === 'undefined' ? 'undefined' : _typeof(b)) !== 'object') return false; return this.$isDeepEqual(a, b, aStack, bStack); }, $isDeepEqual: function $isDeepEqual(a, b, aStack, bStack) { var self = this; var className = toString.call(a); if (className !== toString.call(b)) return false; switch (className) { case '[object RegExp]': case '[object String]': return '' + a === '' + b; case '[object Number]': if (+a !== +a) return +b !== +b; return +a === 0 ? 1 / +a === 1 / b : +a === +b; case '[object Date]': case '[object Boolean]': return +a === +b; case '[object Symbol]': var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); } var areArrays = className === '[object Array]'; if (!areArrays) { if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) !== 'object' || (typeof b === 'undefined' ? 'undefined' : _typeof(b)) !== 'object') return a === b; var aCtor = a.constructor, bCtor = b.constructor; if (aCtor !== bCtor && !(typeof aCtor === 'function' && aCtor instanceof aCtor && typeof bCtor === 'function' && bCtor instanceof bCtor) && 'constructor' in a && 'constructor' in b) { return false; } } aStack = aStack || []; bStack = bStack || []; var length = aStack.length; while (length--) { if (aStack[length] === a) return bStack[length] === b; } aStack.push(a); bStack.push(b); if (areArrays) { length = a.length; if (length !== b.length) return false; while (length--) { if (!self.$isEqual(a[length], b[length], aStack, bStack)) return false; } } else { var keys = Object.keys(a), key; length = keys.length; if (Object.keys(b).length !== length) return false; while (length--) { key = keys[length]; if (!(self.$has(b, key) && self.$isEqual(a[key], b[key], aStack, bStack))) return false; } } aStack.pop(); bStack.pop(); return true; }, $has: function $has(obj, path) { if (toString.call(path) !== '[object Array]') { return obj && hasOwnProperty.call(obj, path); } var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; if (!obj || !hasOwnProperty.call(obj, key)) { return false; } obj = obj[key]; } return !!length; }, $extend: function $extend() { var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; var self = this; if (typeof target === 'boolean') { deep = target; target = arguments[i] || {}; i++; } if ((typeof target === 'undefined' ? 'undefined' : _typeof(target)) !== 'object' && !(typeof target === 'function')) { target = {}; } if (i === length) { target = this; i--; } for (; i < length; i++) { if (options = arguments[i]) { for (name in options) { src = target[name]; copy = options[name]; if (target === copy) { continue; } if (deep && copy && (self.$isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { if (copyIsArray) { copyIsArray = false; clone = src && Array.isArray(src) ? src : []; } else { clone = src && self.$isPlainObject(src) ? src : {}; } target[name] = self.$extend(deep, clone, copy); } else { target[name] = copy; } } } } return target; }, $copy: function $copy(obj) { var deep = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; if (Array.isArray(obj)) { return this.$extend(deep, [], obj); } else if ('' + obj === 'null') { return obj; } else if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object') { return this.$extend(deep, {}, obj); } else return obj; }, $isPlainObject: function $isPlainObject(obj) { var proto, Ctor; if (!obj || Object.prototype.toString.call(obj) !== '[object Object]') { return false; } proto = Object.getPrototypeOf(obj); if (!proto) { return true; } Ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor; return typeof Ctor === 'function' && Object.prototype.hasOwnProperty.toString.call(Ctor) === Object.prototype.hasOwnProperty.toString.call(Object); }, $resolvePath: function $resolvePath(route, url) { if (!url) return route; if (url[0] === '/') { url = url.substr(1); return this.$resolvePath('', url); } if (url[0] !== '.') { return this.$resolvePath(route, './' + url); } var current = route.split('/'); if (url[0] === '.' && url[1] === '/') { url = url.substr(2); if (url[0] !== '.') { if (current.length) current[current.length - 1] = url;else current = [url]; return current.length === 1 ? '/' + current[0] : current.join('/'); } return this.$resolvePath(current.join('/'), url); } if (url[0] === '.' && url[1] === '.' && url[2] === '/') { url = url.replace(/^\.*/ig, ''); current.pop(); return this.$resolvePath(current.join('/'), '.' + url); } if (url[0] === '.') { return this.$resolvePath(route, url.substr(1)); } }, $getParams: function $getParams(url) { var rst = {}; var quoteIndex = url.indexOf('?'); if (quoteIndex !== -1) { var str = url.substr(quoteIndex + 1); var tmp = void 0; str.split('&').forEach(function (v) { tmp = v.split('='); rst[tmp[0]] = decodeURIComponent(tmp[1]); }); } return rst; }, hyphenate: function hyphenate(str) { return str.replace(/([^-])([A-Z])/g, '$1-$2').replace(/([^-])([A-Z])/g, '$1-$2').toLowerCase(); }, camelize: function camelize(str) { return str.replace(/-(\w)/g, function (_, c) { return c ? c.toUpperCase() : ''; }); } }; //# sourceMappingURL=util.js.map