⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsdoc.js

📁 原名JSPackager
💻 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 + -