📄 docs.js
字号:
} } } dojo.debug("Publishing docResults"); dojo.docs._printFnResults(results); } }, _printFunctionResults: function(results){ dojo.debug("_printFnResults(): called"); // summary: Call this function to send the /docs/function/results topic }, _printPkgResult: function(results){ dojo.debug("_printPkgResult(): called"); }, _onDocSelectFunction: function(/*Object*/ input){ // summary: Get doc, meta, and src var name = input.name; var pkg = input.pkg; dojo.debug("_onDocSelectFunction(" + name + ")"); if(!name){ return false; } if(!input.selectKey){ input.selectKey = ++dojo.docs._count; } input.expects = { "docresults": ["meta", "doc", "pkgmeta"] } dojo.docs.getMeta(input, pkg, name, dojo.docs._onDocSelectResults); dojo.docs.getDoc(input, pkg, name, dojo.docs._onDocSelectResults); }, _onDocSelectPackage: function(/*Object*/ input){ dojo.debug("_onDocSelectPackage(" + input.name + ")") input.expects = { "pkgresults": ["pkgmeta", "pkgdoc"] }; if(!input.selectKey){ input.selectKey = ++dojo.docs._count; } dojo.docs.getPkgMeta(input, input.name, dojo.docs._onPkgResults); dojo.docs.getPkgDoc(input, input.name, dojo.docs._onPkgResults); }, _onDocSelectResults: function(/*String*/ type, /*Object*/ data, /*Object*/ evt, /*Object*/ input){ dojo.debug("_onDocSelectResults(" + evt.type + ", " + evt.name + ")"); if(evt.type == "meta"){ dojo.docs.getPkgMeta(input, evt.pkg, dojo.docs._onDocSelectResults); } if(input){ input[evt.type] = data; if(input.expects && input.expects.docresults){ for(var i = 0, expect; expect = input.expects.docresults[i]; i++){ if(!(expect in input)){ dojo.debug("_onDocSelectResults() waiting for more data"); return; } } } } dojo.docs._printFunctionDetail(input); }, _printFunctionDetail: function(results) { // summary: Call this function to send the /docs/function/detail topic event }, _buildCache: function(/*Object*/ input){ dojo.debug("_buildCache(" + input.type + ", " + input.name + ")"); // Get stuff from the input object var type = input.type; var pkg = input.pkg; var callbacks = input.callbacks; var id = input.id; if(!id){ id = input.id = "_"; } var name = input.name; var selectKey = input.selectKey; var META = "meta"; var METHODS = "methods"; var SRC = "src"; var DESCRIPTION = "description"; var INPUT = "input"; var LOAD = "load"; var ERROR = "error"; var docs = dojo.docs; var getCache = docs._getCache; // Stuff to pass to RPC var search = []; if(type == "doc"){ if(!pkg){ docs.functionPackages(selectKey, name, function(){ var a = arguments; docs._withPkg.call(this, a[0], a[1], a[2], a[3], "doc"); }, input); return; }else{ var cached = getCache(pkg, META, METHODS, name, id, META); if(cached[DESCRIPTION]){ callbacks.shift()(LOAD, cached[DESCRIPTION], input, input[INPUT]); return; } var obj = {}; obj.forFormName = "DocFnForm"; obj.limit = 1; obj.filter = "it/DocFnForm/require = '" + pkg + "' and it/DocFnForm/name = '" + name + "' and "; if(id == "_"){ obj.filter += " not(it/DocFnForm/id)"; }else{ obj.filter += " it/DocFnForm/id = '" + id + "'"; } obj.load = function(data){ var cached = getCache(pkg, META, METHODS, name, id, META); var description = ""; var returns = ""; if(data.list && data.list.length){ description = docs._getMainText(data.list[0]["main/text"]); returns = data.list[0]["DocFnForm/returns"]; } cached[DESCRIPTION] = description; if(!cached.returns){ cached.returns = {}; } cached.returns.summary = returns; input.type = "fn"; docs._gotDoc(LOAD, cached, input, input[INPUT]); } obj.error = function(data){ input.type = "fn"; docs._gotDoc(ERROR, {}, input, input[INPUT]); } search.push(obj); obj = {}; obj.forFormName = "DocParamForm"; obj.filter = "it/DocParamForm/fns = '" + pkg + "=>" + name; if(id != "_"){ obj.filter += "=>" + id; } obj.filter += "'"; obj.load = function(data){ var cache = getCache(pkg, META, METHODS, name, id, META); for(var i = 0, param; param = data.list[i]; i++){ var pName = param["DocParamForm/name"]; if(!cache.parameters[pName]){ cache.parameters[pName] = {}; } cache.parameters[pName].summary = param["DocParamForm/desc"]; } input.type = "param"; docs._gotDoc(LOAD, cache.parameters, input); } obj.error = function(data){ input.type = "param"; docs._gotDoc(ERROR, {}, input); } search.push(obj); } }else if(type == "pkgdoc"){ var cached = getCache(name, META); if(cached[DESCRIPTION]){ callbacks.shift()(LOAD, {description: cached[DESCRIPTION], path: cached.path}, input, input.input); return; } var obj = {}; obj.forFormName = "DocPkgForm"; obj.limit = 1; obj.filter = "it/DocPkgForm/require = '" + name + "'"; obj.load = function(data){ var description = ""; var list = data.list; if(list && list.length && list[0]["main/text"]){ description = docs._getMainText(list[0]["main/text"]); cached[DESCRIPTION] = description; cached.path = list[0].name; } if(callbacks && callbacks.length){ callbacks.shift()(LOAD, {description: description, path: cached.path}, input, input.input); } } obj.error = function(data){ if(callbacks && callbacks.length){ callbacks.shift()(ERROR, "", input, input.input); } } search.push(obj); }else if(type == "function_names"){ var cached = getCache(); if(!cached.function_names){ dojo.debug("_buildCache() new cache"); if(callbacks && callbacks.length){ docs._callbacks.function_names.push([input, callbacks.shift()]); } cached.function_names = {loading: true}; var obj = {}; obj.url = "function_names"; obj.load = function(type, data, evt){ cached.function_names = data; while(docs._callbacks.function_names.length){ var parts = docs._callbacks.function_names.pop(); parts[1](LOAD, data, parts[0]); } } obj.error = function(type, data, evt){ while(docs._callbacks.function_names.length){ var parts = docs._callbacks.function_names.pop(); parts[1](LOAD, {}, parts[0]); } } search.push(obj); }else if(cached.function_names.loading){ dojo.debug("_buildCache() loading cache, adding to callback list"); if(callbacks && callbacks.length){ docs._callbacks.function_names.push([input, callbacks.shift()]); } return; }else{ dojo.debug("_buildCache() loading from cache"); if(callbacks && callbacks.length){ callbacks.shift()(LOAD, cached.function_names, input); } return; } }else if(type == META || type == SRC){ if(!pkg){ if(type == META){ docs.functionPackages(selectKey, name, function(){ var a = arguments; docs._withPkg.call(this, a[0], a[1], a[2], a[3], META); }, input); return; }else{ docs.functionPackages(selectKey, name, function(){ var a = arguments; docs._withPkg.call(this, a[0], a[1], a[2], a[3], SRC); }, input); return; } }else{ var cached = getCache(pkg, META, METHODS, name, id); if(cached[type] && cached[type].returns){ if(callbacks && callbacks.length){ callbacks.shift()(LOAD, cached[type], input); return; } } dojo.debug("Finding " + type + " for: " + pkg + ", function: " + name + ", id: " + id); var obj = {}; if(type == SRC){ obj.mimetype = "text/plain" } obj.url = pkg + "/" + name + "/" + id + "/" + type; obj.load = function(type, data, evt){ dojo.debug("_buildCache() loaded " + input.type); if(input.type == SRC){ getCache(pkg, META, METHODS, name, id).src = data; if(callbacks && callbacks.length){ callbacks.shift()(LOAD, data, input, input[INPUT]); } }else{ var cache = getCache(pkg, META, METHODS, name, id, META); if(!cache.parameters){ cache.parameters = {}; } for(var i = 0, param; param = data.parameters[i]; i++){ if(!cache.parameters[param[1]]){ cache.parameters[param[1]] = {}; } cache.parameters[param[1]].type = param[0]; } if(!cache.returns){ cache.returns = {}; } cache.returns.type = data.returns; } if(callbacks && callbacks.length){ callbacks.shift()(LOAD, cache, input, input[INPUT]); } } obj.error = function(type, data, evt){ if(callbacks && callbacks.length){ callbacks.shift()(ERROR, {}, input, input[INPUT]); } } } search.push(obj); }else if(type == "pkgmeta"){ var cached = getCache(name, "meta"); if(cached.requires){ if(callbacks && callbacks.length){ callbacks.shift()(LOAD, cached, input, input[INPUT]); return; } } dojo.debug("Finding package meta for: " + name); var obj = {}; obj.url = name + "/meta"; obj.load = function(type, data, evt){ dojo.debug("_buildCache() loaded for: " + name); var methods = data.methods; if(methods){ for(var method in methods){ if (method == "is") { continue; } for(var pId in methods[method]){ getCache(name, META, METHODS, method, pId, META).summary = methods[method][pId]; } } } var requires = data.requires; var cache = getCache(name, META); if(requires){ cache.requires = requires; } if(callbacks && callbacks.length){ callbacks.shift()(LOAD, cache, input, input[INPUT]); } } obj.error = function(type, data, evt){ if(callbacks && callbacks.length){ callbacks.shift()(ERROR, {}, input, input[INPUT]); } } search.push(obj); } for(var i = 0, obj; obj = search[i]; i++){ var load = obj.load; var error = obj.error; delete obj.load; delete obj.error; var mimetype = obj.mimetype; if(!mimetype){ mimetype = "text/json" } if(obj.url){ dojo.io.bind({ url: new dojo.uri.Uri(docs._url, obj.url), input: input, mimetype: mimetype, error: error, load: load }); }else{ docs._rpc.callRemote("search", obj).addCallbacks(load, error); } } }, selectFunction: function(/*String*/ name, /*String?*/ id){ // summary: The combined information }, savePackage: function(/*Object*/ callbackObject, /*String*/ callback, /*Object*/ parameters){ dojo.event.kwConnect({ srcObj: dojo.docs, srcFunc: "_savedPkgRpc", targetObj: callbackObject, targetFunc: callback, once: true }); var props = {}; var cache = dojo.docs._getCache(parameters.pkg, "meta"); var i = 1; if(!cache.path){ var path = "id"; props[["pname", i].join("")] = "DocPkgForm/require"; props[["pvalue", i++].join("")] = parameters.pkg; }else{ var path = cache.path; } props.form = "//DocPkgForm"; props.path = ["/WikiHome/DojoDotDoc/", path].join(""); if(parameters.description){ props[["pname", i].join("")] = "main/text"; props[["pvalue", i++].join("")] = parameters.description; } dojo.docs._rpc.callRemote("saveForm", props).addCallbacks(dojo.docs._pkgRpc, dojo.docs._pkgRpc); }, _pkgRpc: function(data){ if(data.name){ dojo.docs._getCache(data["DocPkgForm/require"], "meta").path = data.name; dojo.docs._savedPkgRpc("load"); }else{ dojo.docs._savedPkgRpc("error"); } }, _savedPkgRpc: function(type){ }, functionPackages: function(/*mixed*/ selectKey, /*String*/ name, /*Function*/ callback, /*Object*/ input){ // summary: Gets the package associated with a function and stores it in the .pkg value of input dojo.debug("functionPackages() name: " + name); if(!input){ input = {}; } if(!input.callbacks){ input.callbacks = []; } input.type = "function_names"; input.name = name; input.callbacks.unshift(callback); input.callbacks.unshift(dojo.docs._functionPackages); dojo.docs._buildCache(input); }, _functionPackages: function(/*String*/ type, /*Array*/ data, /*Object*/ evt){ dojo.debug("_functionPackages() name: " + evt.name); evt.pkg = ''; var results = []; var data = dojo.docs._cache['function_names']; for(var key in data){ if(dojo.lang.inArray(data[key], evt.name)){ dojo.debug("_functionPackages() package: " + key); results.push(key); } } if(evt.callbacks && evt.callbacks.length){ evt.callbacks.shift()(type, results, evt, evt.input); } }, setUserName: function(/*String*/ name){ dojo.docs._userName = name; if(name && dojo.docs._password){ dojo.docs._logIn(); } }, setPassword: function(/*String*/ password){ dojo.docs._password = password; if(password && dojo.docs._userName){ dojo.docs._logIn(); } }, _logIn: function(){ dojo.io.bind({ url: dojo.docs._rpc.serviceUrl.toString(), method: "post", mimetype: "text/json", content: { username: dojo.docs._userName, password: dojo.docs._password }, load: function(type, data){ if(data.error){ dojo.docs.logInSuccess(); }else{ dojo.docs.logInFailure(); } }, error: function(){ dojo.docs.logInFailure(); } }); }, logInSuccess: function(){}, logInFailure: function(){}, _set: function(/*Object*/ base, /*String...*/ keys, /*String*/ value){ var args = []; for(var i = 0, arg; arg = arguments[i]; i++){ args.push(arg); } if(args.length < 3) return; base = args.shift(); value = args.pop(); var key = args.pop(); for(var i = 0, arg; arg = args[i]; i++){ if(typeof base[arg] != "object"){ base[arg] = {}; } base = base[arg]; } base[key] = value; }, _getCache: function(/*String...*/ keys){ var obj = dojo.docs._cache; for(var i = 0; i < arguments.length; i++){ var arg = arguments[i]; if(!obj[arg]){ obj[arg] = {}; } obj = obj[arg]; } return obj; }});dojo.event.topic.subscribe("/docs/search", dojo.docs, "_onDocSearch");dojo.event.topic.subscribe("/docs/function/select", dojo.docs, "_onDocSelectFunction");dojo.event.topic.subscribe("/docs/package/select", dojo.docs, "_onDocSelectPackage");dojo.event.topic.registerPublisher("/docs/function/results", dojo.docs, "_printFunctionResults");dojo.event.topic.registerPublisher("/docs/function/detail", dojo.docs, "_printFunctionDetail");dojo.event.topic.registerPublisher("/docs/package/detail", dojo.docs, "_printPkgResult");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -