📄 jsdoc.js
字号:
/**
* @public
*/
function JSDoc(){
this.rootInfo = PackageInfo.require("");
var packages = this.collectPackages(Array.apply(null,arguments));
this.packageInfos = [];
for(var i = 0;i<packages.length;i++){
var pi = PackageInfo.require(packages[i])
this.packageInfos.push(pi);
this.packageInfos[pi.name] = pi;
}
}
/**
* @public
*/
JSDoc.prototype.runTasks = function(tasks){
var i = 0;
function task(){
if(i<tasks.length){
var t = tasks[i++];
if((typeof t) == 'function'){
t();
}
setTimeout(task,0);
}
}
task();
};
/**
* @private
*/
JSDoc.prototype.collectPackages = function(pkgs){
var packageMap = {};
var ps = {};
for(var i = 0;i<pkgs.length;i++){
ps[pkgs[i]] = true;
}
do{
var dps = [];
for(var i = 0;i<pkgs.length;i++){
var pkg = $JSI.Package.require(pkgs[i]);
if(pkg == null){
continue;
}
packageMap[pkgs[i]] = pkg;
if(pkg.name!=pkgs[i]){
if(!ps[pkg.name]){
ps[pkg.name] = true;
dps.push(pkg.name);
}
}else{
var infm = pkg.scriptDependenceMap;
for(var s in infm){
var infs = infm[s];
for(var j=0;j<infs.length;j++){
var np = infs[j].packageName;
if(np && !ps[np]){
ps[np] = true;
dps.push(np);
}
}
}
}
}
pkgs = dps;
}while(pkgs.length>0);
var packages = [];
for(var n in packageMap){
packages.push(n);
}
var spkgs = [];
var tpkgs = [];
for(var i = 0;i<packages.length;i++){
if(/^(?:js\.)|(?:org\.\xidea\.)/.test(packages[i])){
spkgs.push(packages[i]);
}else{
tpkgs.push(packages[i]);
}
}
spkgs.sort();
tpkgs.sort();
return spkgs.concat(tpkgs);
};
/**
* @public
*/
JSDoc.prototype.gen = function(obj,anc,win){
var args = obj.args;
var argstrs = [];
for(var i =0;i<args.length;i++){
if(typeof args[i] == 'string'){
argstrs.push("'"+args[i]+"'")
}else{
argstrs.push(args[i]+'')
}
}
var href="controller.html?{cmd:'"+obj.cmd+"',args:["+argstrs.join(',')+"]}"
if(anc){
href= href + "#" + anc;
}
var content = (window.frames||document.frames)[win||'content'];
//var action = href.replace(/^([^#\?]+[#|\?])([^#]+)(#.*)?$/g,"$2");
//var latestAction = content.location.
// href.replace(/^([^#\?]+[#|\?])([^#]+)(#.*)?$/g,"$2");
//if(action != latestAction){
//TODO use the setTimeout('history.go(-1)')
content.location.href = ("wait.html");
//}
setTimeout(function(){content.location.href = href;},100);
return false;
}
/**
* @public
*/
JSDoc.prototype.genMenu = function(doc){
var template = new Template($package.scriptBase+"menu.xhtml");
doc.open();
template.render(
{
jsdoc:this,
rootInfo:this.rootInfo,
css:$package.scriptBase+"styles/menu.css",
packageInfos:this.packageInfos
},doc);
doc.close();
};
/**
* @public
*/
JSDoc.prototype.genPackages = function(doc){
var template = new Template($package.scriptBase+"packages.xhtml");
doc.open();
template.render(
{
jsdoc:this,
rootInfo:this.rootInfo,
css:$package.scriptBase+"styles/default.css",
packageInfos:this.packageInfos
},doc);
doc.close();
}
/**
* @public
*/
JSDoc.prototype.genPackage = function(pkg,doc){
var template = new Template($package.scriptBase+"package.xhtml");
var pkgInfo = PackageInfo.require(pkg);
function run(){
var infos = pkgInfo.getObjectInfos();
var constructors = [];
var functions = [];
var objects = [];
for(var i=0;i<infos.length;i++){
var info = infos[i];
switch(info.getType()){
case "constructor":
constructors.push(info);
break;
case "function":
functions.push(info);
break;
default:
objects.push(info);
}
}
doc.open();
template.render(
{
css:$package.scriptBase+"styles/package.css",
constructors:constructors,
functions:functions,
objects:objects,
files:pkgInfo.fileInfos,
packageInfo:pkgInfo
},doc);
doc.close();
}
var tasks = pkgInfo.getInitializers();
tasks.push(run);
this.runTasks(tasks);
};
/**
* @public
*/
JSDoc.prototype.genFile = function(file,pkg,doc){
var template = new Template($package.scriptBase+"file.xhtml");
doc.open();
template.render(
{
css:$package.scriptBase+"styles/file.css",
fileInfo:PackageInfo.require(pkg).fileInfos[file]
},doc);
doc.close();
};
/**
* @public
*/
JSDoc.prototype.genObject = function(obj,pkg,doc){
var pkgInfo = PackageInfo.require(pkg);
var objInfo = pkgInfo.getObjectInfoMap()[obj];
switch(objInfo.getType()){
case "constructor":
var template = new Template($package.scriptBase+"constructor.xhtml");
break;
case "function":
var template = new Template($package.scriptBase+"function.xhtml");
break;
case "object":
var template = new Template($package.scriptBase+"object.xhtml");
break;
default:
var template = new Template($package.scriptBase+"native.xhtml");
}
doc.open();
template.render(
{
css:$package.scriptBase+"styles/object.css",
objInfo:objInfo
},doc);
doc.close();
}
/**
* @public
*/
JSDoc.prototype.genSource = function(file,pkg,doc){
var sourceEntry = SourceEntry.require(file,pkg);
var timestamp = new Date().getTime();
var source = sourceEntry.source.toString();
var ds = sourceEntry.docEntries;
var anchors = [];
//build a list
//var anchorPrefix = getAnchorPrefix(doc);
if(ds!=null&&ds[0]!=null){
for(var i = 0;i<ds.length;i++){
var id = ds[i].getId();
if(id && id.length>0){
anchors.push({name:id,position:ds[i].end});
}
}
}
sourceEntry.anchors = anchors;
var lines = sourceEntry.buildLineIterator();
var template = new Template($package.scriptBase+"source.xhtml");
template.beforeOutput = function(){
//this.context.evalString = function(){};
}
doc.open();
template.render(
{
jsdoc:this,
css:$package.scriptBase+"styles/source.css",
lines:lines
},doc);
$log.debug("parse timeSpent:",sourceEntry.timeSpent,
"gen timeSpent:",new Date().getTime()-timestamp
);
doc.close();
//prompt('',doc.body.innerHTML)
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -