📄 base.js
字号:
var compareKeys = m.extend(null, arguments); return function (a, b) { var rval = 0; // keep comparing until something is inequal or we run out of // keys to compare for (var i = 0; (rval === 0) && (i < compareKeys.length); i++) { var key = compareKeys[i]; rval = compare(a[key], b[key]); } return rval; }; }, reverseKeyComparator: function (key) { var comparator = MochiKit.Base.keyComparator.apply(this, arguments); return function (a, b) { return comparator(b, a); }; }, partial: function (func) { var m = MochiKit.Base; return m.bind.apply(this, m.extend([func, undefined], arguments, 1)); }, listMinMax: function (which, lst) { if (lst.length === 0) { return null; } var cur = lst[0]; var compare = MochiKit.Base.compare; for (var i = 1; i < lst.length; i++) { var o = lst[i]; if (compare(o, cur) == which) { cur = o; } } return cur; }, objMax: function (/* obj... */) { return MochiKit.Base.listMinMax(1, arguments); }, objMin: function (/* obj... */) { return MochiKit.Base.listMinMax(-1, arguments); }, findIdentical: function (lst, value, start/* = 0 */, /* optional */end) { if (typeof(end) == "undefined" || end === null) { end = lst.length; } for (var i = (start || 0); i < end; i++) { if (lst[i] === value) { return i; } } return -1; }, findValue: function (lst, value, start/* = 0 */, /* optional */end) { if (typeof(end) == "undefined" || end === null) { end = lst.length; } var cmp = MochiKit.Base.compare; for (var i = (start || 0); i < end; i++) { if (cmp(lst[i], value) === 0) { return i; } } return -1; }, nodeWalk: function (node, visitor) { var nodes = [node]; var extend = MochiKit.Base.extend; while (nodes.length) { var res = visitor(nodes.shift()); if (res) { extend(nodes, res); } } }, nameFunctions: function (namespace) { var base = namespace.NAME; if (typeof(base) == 'undefined') { base = ''; } else { base = base + '.'; } for (var name in namespace) { var o = namespace[name]; if (typeof(o) == 'function' && typeof(o.NAME) == 'undefined') { try { o.NAME = base + name; } catch (e) { // pass } } } }, queryString: function (names, values) { // check to see if names is a string or a DOM element, and if // MochiKit.DOM is available. If so, drop it like it's a form // Ugliest conditional in MochiKit? Probably! if (typeof(MochiKit.DOM) != "undefined" && arguments.length == 1 && (typeof(names) == "string" || ( typeof(names.nodeType) != "undefined" && names.nodeType > 0 )) ) { var kv = MochiKit.DOM.formContents(names); names = kv[0]; values = kv[1]; } else if (arguments.length == 1) { var o = names; names = []; values = []; for (var k in o) { var v = o[k]; if (typeof(v) != "function") { names.push(k); values.push(v); } } } var rval = []; var len = Math.min(names.length, values.length); var urlEncode = MochiKit.Base.urlEncode; for (var i = 0; i < len; i++) { v = values[i]; if (typeof(v) != 'undefined' && v !== null) { rval.push(urlEncode(names[i]) + "=" + urlEncode(v)); } } return rval.join("&"); }, parseQueryString: function (encodedString, useArrays) { var pairs = encodedString.replace(/\+/g, "%20").split("&"); var o = {}; var decode; if (typeof(decodeURIComponent) != "undefined") { decode = decodeURIComponent; } else { decode = unescape; } if (useArrays) { for (var i = 0; i < pairs.length; i++) { var pair = pairs[i].split("="); var name = decode(pair[0]); var arr = o[name]; if (!(arr instanceof Array)) { arr = []; o[name] = arr; } arr.push(decode(pair[1])); } } else { for (i = 0; i < pairs.length; i++) { pair = pairs[i].split("="); o[decode(pair[0])] = decode(pair[1]); } } return o; }}); MochiKit.Base.AdapterRegistry = function () { this.pairs = [];};MochiKit.Base.AdapterRegistry.prototype = { register: function (name, check, wrap, /* optional */ override) { if (override) { this.pairs.unshift([name, check, wrap]); } else { this.pairs.push([name, check, wrap]); } }, match: function (/* ... */) { for (var i = 0; i < this.pairs.length; i++) { var pair = this.pairs[i]; if (pair[1].apply(this, arguments)) { return pair[2].apply(this, arguments); } } throw MochiKit.Base.NotFound; }, unregister: function (name) { for (var i = 0; i < this.pairs.length; i++) { var pair = this.pairs[i]; if (pair[0] == name) { this.pairs.splice(i, 1); return true; } } return false; }};MochiKit.Base.EXPORT = [ "counter", "clone", "extend", "update", "updatetree", "setdefault", "keys", "items", "NamedError", "operator", "forwardCall", "itemgetter", "typeMatcher", "isCallable", "isUndefined", "isUndefinedOrNull", "isNull", "isEmpty", "isNotEmpty", "isArrayLike", "isDateLike", "xmap", "map", "xfilter", "filter", "bind", "bindMethods", "NotFound", "AdapterRegistry", "registerComparator", "compare", "registerRepr", "repr", "objEqual", "arrayEqual", "concat", "keyComparator", "reverseKeyComparator", "partial", "merge", "listMinMax", "listMax", "listMin", "objMax", "objMin", "nodeWalk", "zip", "urlEncode", "queryString", "serializeJSON", "registerJSON", "evalJSON", "parseQueryString", "findValue", "findIdentical", "flattenArguments", "method"];MochiKit.Base.EXPORT_OK = [ "nameFunctions", "comparatorRegistry", "reprRegistry", "jsonRegistry", "compareDateLike", "compareArrayLike", "reprArrayLike", "reprString", "reprNumber"];MochiKit.Base._exportSymbols = function (globals, module) { if (typeof(MochiKit.__export__) == "undefined") { MochiKit.__export__ = (MochiKit.__compat__ || (typeof(JSAN) == 'undefined' && typeof(dojo) == 'undefined') ); } if (!MochiKit.__export__) { return; } var all = module.EXPORT_TAGS[":all"]; for (var i = 0; i < all.length; i++) { globals[all[i]] = module[all[i]]; }};MochiKit.Base.__new__ = function () { // A singleton raised when no suitable adapter is found var m = this; // Backwards compat m.forward = m.forwardCall; m.find = m.findValue; if (typeof(encodeURIComponent) != "undefined") { m.urlEncode = function (unencoded) { return encodeURIComponent(unencoded).replace(/\'/g, '%27'); }; } else { m.urlEncode = function (unencoded) { return escape(unencoded ).replace(/\+/g, '%2B' ).replace(/\"/g,'%22' ).rval.replace(/\'/g, '%27'); }; } m.NamedError = function (name) { this.message = name; this.name = name; }; m.NamedError.prototype = new Error(); m.update(m.NamedError.prototype, { repr: function () { if (this.message && this.message != this.name) { return this.name + "(" + m.repr(this.message) + ")"; } else { return this.name + "()"; } }, toString: m.forwardCall("repr") }); m.NotFound = new m.NamedError("MochiKit.Base.NotFound"); m.listMax = m.partial(m.listMinMax, 1); m.listMin = m.partial(m.listMinMax, -1); m.isCallable = m.typeMatcher('function'); m.isUndefined = m.typeMatcher('undefined'); m.merge = m.partial(m.update, null); m.zip = m.partial(m.map, null); m.comparatorRegistry = new m.AdapterRegistry(); m.registerComparator("dateLike", m.isDateLike, m.compareDateLike); m.registerComparator("arrayLike", m.isArrayLike, m.compareArrayLike); m.reprRegistry = new m.AdapterRegistry(); m.registerRepr("arrayLike", m.isArrayLike, m.reprArrayLike); m.registerRepr("string", m.typeMatcher("string"), m.reprString); m.registerRepr("numbers", m.typeMatcher("number", "boolean"), m.reprNumber); m.jsonRegistry = new m.AdapterRegistry(); var all = m.concat(m.EXPORT, m.EXPORT_OK); m.EXPORT_TAGS = { ":common": m.concat(m.EXPORT_OK), ":all": all }; m.nameFunctions(this);};MochiKit.Base.__new__();//// XXX: Internet Explorer blows//if (!MochiKit.__compat__) { compare = MochiKit.Base.compare;}MochiKit.Base._exportSymbols(this, MochiKit.Base);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -