docs.js
来自「Hippo CMS是一个以信息为中心的开源内容管理系统。Hippo CMS目标是」· JavaScript 代码 · 共 672 行 · 第 1/2 页
JS
672 行
name = pkg;
dojo.debug("_onDocSearch found a package");
//dojo.docs._onDocSelectPackage(input);
return;
}
for(var i = 0, fn; fn = data[pkg][i]; i++){
if(fn.toLowerCase().indexOf(name) != -1){
dojo.debug("_onDocSearch(): Search matched " + fn);
var meta = _this.getPackageMeta({package: pkg});
meta.addCallback(closure(pkg, fn));
list.push(meta);
// Build a list of all packages that need to be loaded and their loaded state.
continue pkgLoop;
}
}
}
list = new dojo.DeferredList(list);
list.addCallback(function(results){
dojo.debug("_onDocSearch(): All packages loaded");
_this._printFunctionResults(results[0][1]);
});
});
},
_onDocSearchFn: function(/*String*/ type, /*Array*/ data, /*Object*/ evt){
dojo.debug("_onDocSearchFn(" + evt.name + ")");
var name = evt.name || evt.pkg;
dojo.debug("_onDocSearchFn found a function");
evt.pkgs = packages;
evt.pkg = name;
evt.loaded = 0;
for(var i = 0, pkg; pkg = packages[i]; i++){
dojo.docs.getPkgMeta(evt, pkg, dojo.docs._onDocResults);
}
},
_onPkgResults: function(/*String*/ type, /*Object*/ data, /*Object*/ evt, /*Object*/ input){
dojo.debug("_onPkgResults(" + evt.type + ")");
var description = "";
var path = "";
var methods = {};
var requires = {};
if(input){
input[evt.type] = data;
if(input.expects && input.expects.pkgresults){
for(var i = 0, expect; expect = input.expects.pkgresults[i]; i++){
if(!(expect in input)){
dojo.debug("_onPkgResults() waiting for more data");
return;
}
}
}
path = input.pkgdoc.path;
description = input.pkgdoc.description;
methods = input.pkgmeta.methods;
requires = input.pkgmeta.requires;
}
var pkg = evt.name.replace("_", "*");
var results = {
path: path,
description: description,
size: 0,
methods: [],
pkg: pkg,
requires: requires
}
var rePrivate = /_[^.]+$/;
for(var method in methods){
if(!rePrivate.test(method)){
for(var pId in methods[method]){
results.methods.push({
pkg: pkg,
name: method,
id: pId,
summary: methods[method][pId].summary
})
}
}
}
results.size = results.methods.length;
dojo.docs._printPkgResult(results);
},
_onDocResults: function(/*String*/ type, /*Object*/ data, /*Object*/ evt, /*Object*/ input){
dojo.debug("_onDocResults(" + evt.name + "/" + input.pkg + ") " + type);
++input.loaded;
if(input.loaded == input.pkgs.length){
var pkgs = input.pkgs;
var name = input.pkg;
var results = {methods: []};
var rePrivate = /_[^.]+$/;
data = dojo.docs._cache;
for(var i = 0, pkg; pkg = pkgs[i]; i++){
var methods = dojo.docs._getCache(pkg, "meta", "methods");
for(var fn in methods){
if(fn.toLowerCase().indexOf(name) == -1){
continue;
}
if(fn != "requires" && !rePrivate.test(fn)){
for(var pId in methods[fn]){
var result = {
pkg: pkg,
name: fn,
id: "_",
summary: ""
}
if(methods[fn][pId].summary){
result.summary = methods[fn][pId].summary;
}
results.methods.push(result);
}
}
}
}
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 package = input.package || "";
var id = input.id || "_";
dojo.debug("_onDocSelectFunction(" + name + ")");
if(!name || !package) return false;
var pkgMeta = this.getPackageMeta({package: package});
var meta = this.getFunctionMeta({package: package, name: name, id: id});
var doc = this.getFunctionDocumentation({package: package, name: name, id: id});
var list = new dojo.DeferredList([pkgMeta, meta, doc]);
list.addCallback(function(results){
dojo.debug("_onDocSelectFunction() loaded");
for(var i = 0, result; result = results[i]; i++){
dojo.debugShallow(result[1]);
}
});
return list;
},
_onDocSelectPackage: function(/*Object*/ input){
dojo.debug("_onDocSelectPackage(" + input.name + ")")
input.expects = {
"pkgresults": ["pkgmeta", "pkgdoc"]
};
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
},
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(/*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);
},
_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 + =
减小字号Ctrl + -
显示快捷键?