diff --git a/browsers.js b/browsers.js index f0ad36c..8c62387 100644 --- a/browsers.js +++ b/browsers.js @@ -7,139 +7,145 @@ * Copyright (C) 2010-2012, Dexter.Yy, MIT License * vim: et:ts=4:sw=4:sts=4 */ +if (typeof module === 'undefined' + && (typeof define !== 'function' || !define.amd)) { + define = function(mid, deps, factory){ + (this.mo || (this.mo = {})).browsers = factory(); + }; +} define("mo/browsers", [], function(){ - var match, skin, os, is_mobile_webkit, is_touch, is_webview, - ua = this.navigator.userAgent.toLowerCase(), - rank = { - "360ee": 2, - "maxthon/3": 2, - "qqbrowser": 2, - "metasr": 2, - "360se": 1, - "theworld": 1, - "maxthon": 1, - "tencenttraveler": -1 - }; - - try { - var rwindows = /(windows) nt ([\w.]+)/, - rmac = /(mac) os \w+ ([\w.]+)/, - rwindowsphone = /(windows phone)[\sos]* ([\w.]+)/, - riphone = /(iphone).*? os ([\w.]+)/, - ripad = /(ipad).*? os ([\w.]+)/, - randroid = /(android)[ ;]([\w.]*)/, - rmobilewebkit = /(\w+)[ \/]([\w.]+)[ \/]mobile/, - rsafari = /(\w+)[ \/]([\w.]+)[ \/]safari/, - rmobilesafari = /[ \/]mobile.*safari/, - rwebview = /[ \/]mobile/, - rtouch = / touch/, - rwebkit = /(webkit)[ \/]([\w.]+)/, - ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, - rmsie = /(msie) ([\w.]+)/, - rie11 = /(trident).*? rv:([\w.]+)/, - rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/; +var match, skin, os, is_mobile_webkit, is_touch, is_webview, + ua = this.navigator.userAgent.toLowerCase(), + rank = { + "360ee": 2, + "maxthon/3": 2, + "qqbrowser": 2, + "metasr": 2, + "360se": 1, + "theworld": 1, + "maxthon": 1, + "tencenttraveler": -1 + }; - var r360se = /(360se)/, - r360ee = /(360ee)/, - r360phone = /(360) \w+phone/, - rtheworld = /(theworld)/, - rmaxthon3 = /(maxthon\/3)/, - rmaxthon = /(maxthon)/, - rtt = /(tencenttraveler)/, - rqq = /(qqbrowser)/, - rbaidu = /(baidubrowser)/, - ruc = /(ucbrowser)/, - rsogou = /(sogou\w*browser)/, - rmetasr = /(metasr)/; +try { + var rwindows = /(windows) nt ([\w.]+)/, + rmac = /(mac) os \w+ ([\w.]+)/, + rwindowsphone = /(windows phone)[\sos]* ([\w.]+)/, + riphone = /(iphone).*? os ([\w.]+)/, + ripad = /(ipad).*? os ([\w.]+)/, + randroid = /(android)[ ;]([\w.]*)/, + rmobilewebkit = /(\w+)[ \/]([\w.]+)[ \/]mobile/, + rsafari = /(\w+)[ \/]([\w.]+)[ \/]safari/, + rmobilesafari = /[ \/]mobile.*safari/, + rwebview = /[ \/]mobile/, + rtouch = / touch/, + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rie11 = /(trident).*? rv:([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/; - os = riphone.exec(ua) - || ripad.exec(ua) - || randroid.exec(ua) - || rmac.exec(ua) - || rwindowsphone.exec(ua) - || rwindows.exec(ua) - || []; + var r360se = /(360se)/, + r360ee = /(360ee)/, + r360phone = /(360) \w+phone/, + rtheworld = /(theworld)/, + rmaxthon3 = /(maxthon\/3)/, + rmaxthon = /(maxthon)/, + rtt = /(tencenttraveler)/, + rqq = /(qqbrowser)/, + rbaidu = /(baidubrowser)/, + ruc = /(ucbrowser)/, + rsogou = /(sogou\w*browser)/, + rmetasr = /(metasr)/; - skin = r360se.exec(ua) - || r360ee.exec(ua) - || r360phone.exec(ua) - || ruc.exec(ua) - || rtheworld.exec(ua) - || rmaxthon3.exec(ua) - || rmaxthon.exec(ua) - || rtt.exec(ua) - || rqq.exec(ua) - || rbaidu.exec(ua) - || rsogou.exec(ua) - || rmetasr.exec(ua) - || []; + os = riphone.exec(ua) + || ripad.exec(ua) + || randroid.exec(ua) + || rmac.exec(ua) + || rwindowsphone.exec(ua) + || rwindows.exec(ua) + || []; - match = rwebkit.exec(ua) - || ropera.exec(ua) - || rmsie.exec(ua) - || rie11.exec(ua) - || ua.indexOf("compatible") < 0 && rmozilla.exec(ua) - || []; + skin = r360se.exec(ua) + || r360ee.exec(ua) + || r360phone.exec(ua) + || ruc.exec(ua) + || rtheworld.exec(ua) + || rmaxthon3.exec(ua) + || rmaxthon.exec(ua) + || rtt.exec(ua) + || rqq.exec(ua) + || rbaidu.exec(ua) + || rsogou.exec(ua) + || rmetasr.exec(ua) + || []; - is_mobile_webkit = rmobilesafari.exec(ua) - || (is_webview = rwebview.exec(ua)); + match = rwebkit.exec(ua) + || ropera.exec(ua) + || rmsie.exec(ua) + || rie11.exec(ua) + || ua.indexOf("compatible") < 0 && rmozilla.exec(ua) + || []; - is_touch = rtouch.exec(ua); + is_mobile_webkit = rmobilesafari.exec(ua) + || (is_webview = rwebview.exec(ua)); - if (match[1] === 'trident') { - match[1] = 'msie'; - } + is_touch = rtouch.exec(ua); - if (match[1] === 'webkit') { - var vendor = (is_mobile_webkit ? rmobilewebkit.exec(ua) - : rsafari.exec(ua)) || []; - match[3] = match[1]; - match[4] = match[2]; - match[1] = vendor[1] === 'version' - && ((os[1] === 'iphone' - || os[1] === 'ipad') - && 'mobilesafari' - || os[1] === 'android' - && 'aosp' - || 'safari') - || skin[1] - || is_webview && 'webview' - || vendor[1]; - match[2] = vendor[2]; - } + if (match[1] === 'trident') { + match[1] = 'msie'; + } - } catch (ex) { - match = []; - skin = []; + if (match[1] === 'webkit') { + var vendor = (is_mobile_webkit ? rmobilewebkit.exec(ua) + : rsafari.exec(ua)) || []; + match[3] = match[1]; + match[4] = match[2]; + match[1] = vendor[1] === 'version' + && ((os[1] === 'iphone' + || os[1] === 'ipad') + && 'mobilesafari' + || os[1] === 'android' + && 'aosp' + || 'safari') + || skin[1] + || is_webview && 'webview' + || vendor[1]; + match[2] = vendor[2]; } - var result = { - browser: match[1] || skin[1] || "", - version: match[2] || "0", - engine: match[3], - engineversion: match[4] || "0", - os: os[1], - osversion: os[2] || "0", - isMobile: os[1] === 'iphone' - || os[1] === 'windows phone' - || os[1] === 'android' && !!is_mobile_webkit, - isTouch: os[1] === 'iphone' - || os[1] === 'windows phone' - || os[1] === 'android' - || os[1] === 'windows' && is_touch, - skin: skin[1] || "", - ua: ua - }; +} catch (ex) { + match = []; + skin = []; +} - if (match[1]) { - result[match[1]] = parseInt(result.version, 10) || true; - } - if (skin[1]) { - result.rank = rank[result.skin] || 0; - } - result.shell = result.skin; +var result = { + browser: match[1] || skin[1] || "", + version: match[2] || "0", + engine: match[3], + engineversion: match[4] || "0", + os: os[1], + osversion: os[2] || "0", + isMobile: os[1] === 'iphone' + || os[1] === 'windows phone' + || os[1] === 'android' && !!is_mobile_webkit, + isTouch: os[1] === 'iphone' + || os[1] === 'windows phone' + || os[1] === 'android' + || os[1] === 'windows' && is_touch, + skin: skin[1] || "", + ua: ua +}; + +if (match[1]) { + result[match[1]] = parseInt(result.version, 10) || true; +} +if (skin[1]) { + result.rank = rank[result.skin] || 0; +} +result.shell = result.skin; - return result; +return result; }); diff --git a/lang/mix.js b/lang/mix.js index 167808e..1ec75cb 100644 --- a/lang/mix.js +++ b/lang/mix.js @@ -5,218 +5,226 @@ * Copyright (C) 2010-2012, Dexter.Yy, MIT License * vim: et:ts=4:sw=4:sts=4 */ +if (typeof module === 'undefined' + && (typeof define !== 'function' || !define.amd)) { + define = function(mid, deps, factory){ + var exports = ((this.mo || (this.mo = {})).lang + || (this.mo.lang = {})).mix = {}; + factory(null, this.mo.lang.type, null, exports); + }; +} define("mo/lang/mix", [ "./es5", "./type" ], function(_0, _, require, exports){ - var type = _.type; +var type = _.type; - function mix(origin) { - var objs = arguments, ol = objs.length, - VALTYPE = { 'number': 1, 'boolean': 2, 'string': 3 }, - obj, lvl, i, l; - if (typeof objs[ol - 1] !== 'object') { - lvl = objs[ol - 1] || 0; - ol--; - } else { - lvl = 0; - } - for (var n = 1; n < ol; n++) { - obj = objs[n]; - if (Array.isArray(obj)) { - origin = !VALTYPE[typeof origin] && origin || []; - l = obj.length; - for (i = 0; i < l; i++) { - if (lvl >= 1 && obj[i] && typeof obj[i] === 'object') { - origin[i] = mix(origin[i], obj[i], lvl - 1); - } else { - origin[i] = obj[i]; - } +function mix(origin) { + var objs = arguments, ol = objs.length, + VALTYPE = { 'number': 1, 'boolean': 2, 'string': 3 }, + obj, lvl, i, l; + if (typeof objs[ol - 1] !== 'object') { + lvl = objs[ol - 1] || 0; + ol--; + } else { + lvl = 0; + } + for (var n = 1; n < ol; n++) { + obj = objs[n]; + if (Array.isArray(obj)) { + origin = !VALTYPE[typeof origin] && origin || []; + l = obj.length; + for (i = 0; i < l; i++) { + if (lvl >= 1 && obj[i] && typeof obj[i] === 'object') { + origin[i] = mix(origin[i], obj[i], lvl - 1); + } else { + origin[i] = obj[i]; } - } else { - origin = !VALTYPE[typeof origin] && origin || {}; - for (i in obj) { - if (lvl >= 1 && obj[i] && typeof obj[i] === 'object') { - origin[i] = mix(origin[i], obj[i], lvl - 1); - } else { - origin[i] = obj[i]; - } + } + } else { + origin = !VALTYPE[typeof origin] && origin || {}; + for (i in obj) { + if (lvl >= 1 && obj[i] && typeof obj[i] === 'object') { + origin[i] = mix(origin[i], obj[i], lvl - 1); + } else { + origin[i] = obj[i]; } } } - return origin; } + return origin; +} - function merge(origin) { - var objs = arguments, ol = objs.length, - ITERTYPE = { 'object': 1, 'array': 2 }, - obj, lvl, i, k, lib, marked, mark; - if (typeof objs[ol - 1] !== 'object') { - lvl = objs[ol - 1] || 0; - ol--; - } else { - lvl = 0; +function merge(origin) { + var objs = arguments, ol = objs.length, + ITERTYPE = { 'object': 1, 'array': 2 }, + obj, lvl, i, k, lib, marked, mark; + if (typeof objs[ol - 1] !== 'object') { + lvl = objs[ol - 1] || 0; + ol--; + } else { + lvl = 0; + } + for (var n = 1; n < ol; n++) { + obj = objs[n]; + if (typeof obj !== 'object') { + continue; } - for (var n = 1; n < ol; n++) { - obj = objs[n]; - if (typeof obj !== 'object') { + if (Array.isArray(origin)) { + if (!Array.isArray(obj)) { continue; } - if (Array.isArray(origin)) { - if (!Array.isArray(obj)) { - continue; - } - origin = origin || []; - lib = {}; - marked = []; - mark = '__oz_uniqmark_' + (+new Date() + Math.random()); - obj = obj.concat(origin); - origin.length = 0; - obj.forEach(function(i){ - if (i && typeof i === 'object') { - if (!i[mark]) { - if (lvl >= 1 && Array.isArray(i)) { - origin.push(merge(i, [], lvl - 1)); - } else { - origin.push(i); - } - i[mark] = 1; - marked.push(i); - } - } else { - k = (typeof i) + '_' + i; - if (!this[k]) { + origin = origin || []; + lib = {}; + marked = []; + mark = '__oz_uniqmark_' + (+new Date() + Math.random()); + obj = obj.concat(origin); + origin.length = 0; + obj.forEach(function(i){ + if (i && typeof i === 'object') { + if (!i[mark]) { + if (lvl >= 1 && Array.isArray(i)) { + origin.push(merge(i, [], lvl - 1)); + } else { origin.push(i); - this[k] = 1; } + i[mark] = 1; + marked.push(i); } - }, lib); - marked.forEach(function(i){ - delete i[mark]; - }); - } else { - origin = origin || {}; - for (i in obj) { - if (!origin.hasOwnProperty(i)) { - origin[i] = obj[i]; - } else if (lvl >= 1 && i - // avoid undefined === undefined - && ITERTYPE[type(origin[i])] + 0 === ITERTYPE[type(obj[i])] + 0) { - origin[i] = merge(origin[i], obj[i], lvl - 1); + } else { + k = (typeof i) + '_' + i; + if (!this[k]) { + origin.push(i); + this[k] = 1; } } + }, lib); + marked.forEach(function(i){ + delete i[mark]; + }); + } else { + origin = origin || {}; + for (i in obj) { + if (!origin.hasOwnProperty(i)) { + origin[i] = obj[i]; + } else if (lvl >= 1 && i + // avoid undefined === undefined + && ITERTYPE[type(origin[i])] + 0 === ITERTYPE[type(obj[i])] + 0) { + origin[i] = merge(origin[i], obj[i], lvl - 1); + } } } - return origin; } + return origin; +} - function interset(origin) { - var objs = arguments, ol = objs.length, - ITERTYPE = { 'object': 1, 'array': 2 }, - obj, lvl, i, k, lib, marked, mark; - if (typeof objs[ol - 1] !== 'object') { - lvl = objs[ol - 1] || 0; - ol--; - } else { - lvl = 0; +function interset(origin) { + var objs = arguments, ol = objs.length, + ITERTYPE = { 'object': 1, 'array': 2 }, + obj, lvl, i, k, lib, marked, mark; + if (typeof objs[ol - 1] !== 'object') { + lvl = objs[ol - 1] || 0; + ol--; + } else { + lvl = 0; + } + for (var n = 1; n < ol; n++) { + obj = objs[n]; + if (typeof obj !== 'object') { + continue; } - for (var n = 1; n < ol; n++) { - obj = objs[n]; - if (typeof obj !== 'object') { + if (Array.isArray(origin)) { + if (!Array.isArray(obj)) { continue; } - if (Array.isArray(origin)) { - if (!Array.isArray(obj)) { - continue; + origin = origin || []; + lib = {}; + marked = []; + mark = '__oz_uniqmark_' + (+new Date() + Math.random()); + origin.forEach(function(i){ + if (i && typeof i === 'object' && !i[mark]) { + i[mark] = 1; + marked.push(i); + } else { + k = (typeof i) + '_' + i; + this[k] = 1; } - origin = origin || []; - lib = {}; - marked = []; - mark = '__oz_uniqmark_' + (+new Date() + Math.random()); - origin.forEach(function(i){ - if (i && typeof i === 'object' && !i[mark]) { - i[mark] = 1; - marked.push(i); - } else { - k = (typeof i) + '_' + i; - this[k] = 1; + }, lib); + origin.length = 0; + obj.forEach(function(i){ + if (i && typeof i === 'object') { + if (i[mark] === 1) { + origin.push(i); + i[mark] = 2; } - }, lib); - origin.length = 0; - obj.forEach(function(i){ - if (i && typeof i === 'object') { - if (i[mark] === 1) { - origin.push(i); - i[mark] = 2; - } - } else { - k = (typeof i) + '_' + i; - if (this[k] === 1) { - origin.push(i); - this[k] = 2; - } - } - }, lib); - marked.forEach(function(i){ - delete i[mark]; - }); - } else { - origin = origin || {}; - for (i in origin) { - if (!obj.hasOwnProperty(i)) { - delete origin[i]; - } else if (lvl >= 1 && i - && ITERTYPE[type(origin[i])] + 0 === ITERTYPE[type(obj[i])] + 0) { - origin[i] = interset(origin[i], obj[i], lvl - 1); + } else { + k = (typeof i) + '_' + i; + if (this[k] === 1) { + origin.push(i); + this[k] = 2; } } + }, lib); + marked.forEach(function(i){ + delete i[mark]; + }); + } else { + origin = origin || {}; + for (i in origin) { + if (!obj.hasOwnProperty(i)) { + delete origin[i]; + } else if (lvl >= 1 && i + && ITERTYPE[type(origin[i])] + 0 === ITERTYPE[type(obj[i])] + 0) { + origin[i] = interset(origin[i], obj[i], lvl - 1); + } } } - return origin; } + return origin; +} - exports.mix = mix; - exports.merge = merge; - exports.interset = interset; +exports.mix = mix; +exports.merge = merge; +exports.interset = interset; - exports.copy = function(obj, lvl) { - return mix(null, obj, lvl); - }; +exports.copy = function(obj, lvl) { + return mix(null, obj, lvl); +}; - exports.occupy = function(origin, obj, lvl) { - return mix(interset(origin, obj, lvl), obj, lvl); - }; +exports.occupy = function(origin, obj, lvl) { + return mix(interset(origin, obj, lvl), obj, lvl); +}; - exports.defaults = merge; +exports.defaults = merge; - exports.config = function(cfg, opt, default_cfg, lvl){ - return mix(merge(cfg, default_cfg, lvl), interset(mix(null, opt, lvl), default_cfg, lvl), lvl); - }; +exports.config = function(cfg, opt, default_cfg, lvl){ + return mix(merge(cfg, default_cfg, lvl), interset(mix(null, opt, lvl), default_cfg, lvl), lvl); +}; - exports.unique = function(origin, lvl) { - return merge(origin, [], lvl); - }; +exports.unique = function(origin, lvl) { + return merge(origin, [], lvl); +}; - exports.each = function(obj, fn, context){ - var i = 0, l = obj.length, re; - if (_.isArraylike(obj)) { - for (; i < l; i++) { - re = fn.call(context, obj[i], i); - if (re === false) { - break; - } +exports.each = function(obj, fn, context){ + var i = 0, l = obj.length, re; + if (_.isArraylike(obj)) { + for (; i < l; i++) { + re = fn.call(context, obj[i], i); + if (re === false) { + break; } - } else { - for (i in obj) { - re = fn.call(context, obj[i], i); - if (re === false) { - break; - } + } + } else { + for (i in obj) { + re = fn.call(context, obj[i], i); + if (re === false) { + break; } } - return obj; - }; + } + return obj; +}; }); diff --git a/lang/oop.js b/lang/oop.js index 4fcab4d..8f26810 100644 --- a/lang/oop.js +++ b/lang/oop.js @@ -5,88 +5,96 @@ * Copyright (C) 2010-2012, Dexter.Yy, MIT License * vim: et:ts=4:sw=4:sts=4 */ +if (typeof module === 'undefined' + && (typeof define !== 'function' || !define.amd)) { + define = function(mid, deps, factory){ + var exports = ((this.mo || (this.mo = {})).lang + || (this.mo.lang = {})).oop = {}; + factory(null, this.mo.lang.mix, null, exports); + }; +} define("mo/lang/oop", [ "./es5", "./mix" ], function(es5, _, require, exports){ - var mix = _.mix; +var mix = _.mix; - exports.construct = function(base, mixes, factory){ - if (mixes && !Array.isArray(mixes)) { - factory = mixes; - mixes = null; - } - if (!factory) { - factory = function(){ - this.superConstructor.apply(this, arguments); - }; - } - if (!base.__constructor) { - base.__constructor = base; - base.__supr = base.prototype; - } - var proto = Object.create(base.prototype), - supr = Object.create(base.prototype), - current_supr = {}; - supr.__super = base.__supr; - supr.__self = base.prototype; - var sub = function(){ - this.superMethod = sub.__superMethod; - this.superConstructor = su_construct; - this.constructor = sub.__constructor; - this.superClass = supr; // deprecated! - return factory.apply(this, arguments); +exports.construct = function(base, mixes, factory){ + if (mixes && !Array.isArray(mixes)) { + factory = mixes; + mixes = null; + } + if (!factory) { + factory = function(){ + this.superConstructor.apply(this, arguments); }; - sub.__supr = supr; - sub.__constructor = sub; - sub.__superMethod = function(name, args){ - var tm = {}, re = tm, - last_supr = current_supr[name]; - if (!last_supr) { - current_supr[name] = supr; - if (!sub.prototype.hasOwnProperty(name)) { - re = this.superMethod.apply(this, arguments); - } - } else { - current_supr[name] = last_supr.__super; - if (!last_supr.__self.hasOwnProperty(name)) { - re = this.superMethod.apply(this, arguments); - } + } + if (!base.__constructor) { + base.__constructor = base; + base.__supr = base.prototype; + } + var proto = Object.create(base.prototype), + supr = Object.create(base.prototype), + current_supr = {}; + supr.__super = base.__supr; + supr.__self = base.prototype; + var sub = function(){ + this.superMethod = sub.__superMethod; + this.superConstructor = su_construct; + this.constructor = sub.__constructor; + this.superClass = supr; // deprecated! + return factory.apply(this, arguments); + }; + sub.__supr = supr; + sub.__constructor = sub; + sub.__superMethod = function(name, args){ + var tm = {}, re = tm, + last_supr = current_supr[name]; + if (!last_supr) { + current_supr[name] = supr; + if (!sub.prototype.hasOwnProperty(name)) { + re = this.superMethod.apply(this, arguments); } - if (re === tm) { - re = current_supr[name][name].apply(this, args); + } else { + current_supr[name] = last_supr.__super; + if (!last_supr.__self.hasOwnProperty(name)) { + re = this.superMethod.apply(this, arguments); } - current_supr[name] = last_supr; - return re; - }; - sub.prototype = proto; - if (mixes) { - mixes = mix.apply(this, mixes); - mix(proto, mixes); - mix(supr, mixes); } - function su_construct(){ - var cache_constructor = base.__constructor, - cache_super_method = base.__superMethod; - base.__constructor = sub; - base.__superMethod = sub.__superMethod; - _apply.prototype = base.prototype; - var su = new _apply(base, this, arguments); - for (var i in su) { - if (!this[i]) { - this[i] = supr[i] = su[i]; - } - } - base.__constructor = cache_constructor; - base.__superMethod = cache_super_method; - this.superConstructor = su_construct; + if (re === tm) { + re = current_supr[name][name].apply(this, args); } - return sub; + current_supr[name] = last_supr; + return re; }; - - function _apply(base, self, args){ - base.apply(self, args); + sub.prototype = proto; + if (mixes) { + mixes = mix.apply(this, mixes); + mix(proto, mixes); + mix(supr, mixes); } + function su_construct(){ + var cache_constructor = base.__constructor, + cache_super_method = base.__superMethod; + base.__constructor = sub; + base.__superMethod = sub.__superMethod; + _apply.prototype = base.prototype; + var su = new _apply(base, this, arguments); + for (var i in su) { + if (!this[i]) { + this[i] = supr[i] = su[i]; + } + } + base.__constructor = cache_constructor; + base.__superMethod = cache_super_method; + this.superConstructor = su_construct; + } + return sub; +}; + +function _apply(base, self, args){ + base.apply(self, args); +} }); diff --git a/lang/struct.js b/lang/struct.js index 8825413..d8c6488 100644 --- a/lang/struct.js +++ b/lang/struct.js @@ -5,63 +5,71 @@ * Copyright (C) 2010-2012, Dexter.Yy, MIT License * vim: et:ts=4:sw=4:sts=4 */ +if (typeof module === 'undefined' + && (typeof define !== 'function' || !define.amd)) { + define = function(mid, deps, factory){ + var exports = ((this.mo || (this.mo = {})).lang + || (this.mo.lang = {})).struct = {}; + factory(null, this.mo.lang.mix, null, exports); + }; +} define("mo/lang/struct", [ "./es5", "./mix" ], function(_0, _, require, exports){ - var mix = _.mix; +var mix = _.mix; - exports.index = function(list, key) { - var obj = {}, item; - for (var i = 0, l = list.length; i < l; i++) { - item = list[i]; - if (key && typeof item === 'object') { - obj[item[key]] = item; - } else { - obj[item] = true; - } +exports.index = function(list, key) { + var obj = {}, item; + for (var i = 0, l = list.length; i < l; i++) { + item = list[i]; + if (key && typeof item === 'object') { + obj[item[key]] = item; + } else { + obj[item] = true; } - return obj; - }; + } + return obj; +}; - exports.fnQueue = function(){ - var queue = [], dup = false; - function getCallMethod(type){ - return function(){ - var re, fn; - dup = this.slice().reverse(); - while (fn = dup.pop()) { - re = fn[type].apply(fn, arguments); - } - dup = false; - return re; - }; - } - mix(queue, { - call: getCallMethod('call'), - apply: getCallMethod('apply'), - clear: function(func){ - if (!func) { - this.length = 0; - } else { - var size = this.length, - popsize = size - dup.length; - for (var i = this.length - 1; i >= 0; i--) { - if (this[i] === func) { - this.splice(i, 1); - if (dup && i >= popsize) - dup.splice(size - i - 1, 1); - } +exports.fnQueue = function(){ + var queue = [], dup = false; + function getCallMethod(type){ + return function(){ + var re, fn; + dup = this.slice().reverse(); + while (fn = dup.pop()) { + re = fn[type].apply(fn, arguments); + } + dup = false; + return re; + }; + } + mix(queue, { + call: getCallMethod('call'), + apply: getCallMethod('apply'), + clear: function(func){ + if (!func) { + this.length = 0; + } else { + var size = this.length, + popsize = size - dup.length; + for (var i = this.length - 1; i >= 0; i--) { + if (this[i] === func) { + this.splice(i, 1); + if (dup && i >= popsize) + dup.splice(size - i - 1, 1); } - if (i < 0) - return false; } - return true; + if (i < 0) + return false; } - }); - return queue; - }; + return true; + } + }); + return queue; +}; }); diff --git a/lang/type.js b/lang/type.js index e1abd91..a5f831f 100644 --- a/lang/type.js +++ b/lang/type.js @@ -5,51 +5,59 @@ * Copyright (C) 2010-2012, Dexter.Yy, MIT License * vim: et:ts=4:sw=4:sts=4 */ +if (typeof module === 'undefined' + && (typeof define !== 'function' || !define.amd)) { + define = function(mid, deps, factory){ + var exports = ((this.mo || (this.mo = {})).lang + || (this.mo.lang = {})).type = {}; + factory(null, null, exports); + }; +} define("mo/lang/type", [ "./es5" ], function(_0, require, exports){ - var _toString = Object.prototype.toString, - _aproto = Array.prototype, - _typeMap = {}; +var _toString = Object.prototype.toString, + _aproto = Array.prototype, + _typeMap = {}; - _aproto.forEach.call("Boolean Number String Function Array Date RegExp Object".split(" "), function(name){ - this[ "[object " + name + "]" ] = name.toLowerCase(); - }, _typeMap); +_aproto.forEach.call("Boolean Number String Function Array Date RegExp Object".split(" "), function(name){ + this[ "[object " + name + "]" ] = name.toLowerCase(); +}, _typeMap); - function type(obj) { - return obj == null ? - String(obj) : - _typeMap[ _toString.call(obj) ] || "object"; - } +function type(obj) { + return obj == null ? + String(obj) : + _typeMap[ _toString.call(obj) ] || "object"; +} - exports.type = type; +exports.type = type; - exports.isFunction = function(obj) { - return _toString.call(obj) === "[object Function]"; - }; +exports.isFunction = function(obj) { + return _toString.call(obj) === "[object Function]"; +}; - exports.isWindow = function(obj) { - return obj && obj === obj.window; - }; +exports.isWindow = function(obj) { + return obj && obj === obj.window; +}; - exports.isEmptyObject = function(obj) { - for (var name in obj) { - name = null; - return false; - } - return true; - }; - - exports.isArraylike = function(obj){ - var l = obj.length; - return !exports.isWindow(obj) - && (typeof obj !== 'function' - || obj.constructor !== Function) - && (l === 0 - || typeof l === "number" - && l > 0 - && (l - 1) in obj); - }; +exports.isEmptyObject = function(obj) { + for (var name in obj) { + name = null; + return false; + } + return true; +}; + +exports.isArraylike = function(obj){ + var l = obj.length; + return !exports.isWindow(obj) + && (typeof obj !== 'function' + || obj.constructor !== Function) + && (l === 0 + || typeof l === "number" + && l > 0 + && (l - 1) in obj); +}; });