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

📄 file-info.js

📁 JS编译工具
💻 JS
字号:
/*
 * JavaScript Integration Framework
 * License LGPL(您可以在任何地方免费使用,但请不要吝啬您对框架本身的改进)
 * http://www.xidea.org/project/jsi/
 * @author jindw
 * @version $Id: file-info.js,v 1.7 2008/03/15 08:59:26 jindw Exp $
 */

/**
 * @public
 */
function FileInfo(packageInfo,fileName){
    this.packageInfo = packageInfo;
    this._depInf = new DependenceInfo(packageInfo.packageObject.name.replace(/\.|$/g,'/')+fileName)
    this.packageObject = packageInfo.packageObject;
    this.name = fileName;
    //$log.debug(this.packageObject.dependenceMap)
    this.dependences = this.packageObject.dependenceMap[fileName] || [];
    this.objects = [];
    var objectScriptMap = this.packageObject.objectScriptMap;
    for(var o in objectScriptMap){
        if(objectScriptMap[o] == fileName){
            this.objects.push(o);
        }
    }
}
/**
 * @public
 */
FileInfo.prototype.getDescription = function(){
    return this.getSourceEntry().getDescription();
}

FileInfo.prototype.getPath = function(){
     return this.packageInfo.name.replace(/\.|$/g,'/')+this.name;
}
/**
 * @public
 */
FileInfo.prototype.getSourceEntry = function(){
    if(!this._sourceEntry){
        this._sourceEntry = SourceEntry.require(this.name,this.packageObject.name);
    }
    return this._sourceEntry;
};


/**
 * @public
 */
FileInfo.prototype.getDocEntry = function(name){
    return this.getSourceEntry().getDocEntry(name);
};


/**
 * @public
 */
FileInfo.prototype.getObject = function(name){
    return this.getObjectMap()[name];
};
/**
 * @friend
 */
FileInfo.prototype.getObjectMap = function(){
    if(this._objectMap){
        return this._objectMap;
    }
    try{
        this._objectMap = {};
        //this.packageObject.loadScript(this.name,false);
        try{
            var path = this.packageObject.name.replace(/\.|$/g,'/') +this.name;
            //this.packageObject.loadScript(this.name,false);
            //Avoid document.write
            var backup = document.write;
            document.write = voidWrite;
            $import(path,null);
            document.write = backup;
        }catch(e){
            $log.info("文档工具装载脚本失败:",path,e);
        }
        for(var i=0;i<this.objects.length;i++){
            this._objectMap[this.objects[i]] = getObject(this.objects[i],this.packageObject.objectMap)
        }
    }catch(e){
        $log.error(e);
    }
    return this._objectMap;
};
/**
 * @internal 
 */
function voidWrite(){
    
}

/**
 * @public
 */
FileInfo.prototype.getObjectInfo = function(name){
    return this.getObjectInfoMap()[name]
}


/**
 * @public
 */
FileInfo.prototype.getObjectInfoMap = function(){
    if(this._objectInfoMap){
        return this._objectInfoMap;
    }
    try{
        this._objectInfoMap = {}
        for(var i = 0;i<this.objects.length;i++){
            this._objectInfoMap[this.objects[i]] = ObjectInfo.create(this,this.objects[i]);
        }
        return this._objectInfoMap;
    }catch(e){
        $log.error(e);
    }
}


/**
 * @friend
 */
FileInfo.prototype.getAvailableObjectInfo = function(name){
    var fileInfo = this.getAvailableObjectFileInfoMap()[name];
    if(fileInfo){
        return fileInfo.getObjectInfo(name);
    }
}
/**
 * @friend
 */
FileInfo.prototype.getAvailableObjectFileInfoMap = function(name){
    if(!this._availableOFMap){
        this._availableOFMap = {};
        var dependenceInfos = this._depInf.getBeforeInfos();
        dependenceInfos = dependenceInfos.concat(this._depInf.getAfterInfos());
        for(var i = 0;i<dependenceInfos.length;i++){
            var dependenceInfo = dependenceInfos[i];
            var names = dependenceInfo.objectNames;
            var depPkgName = dependenceInfo.packageObject.name;
            var depPkgInfo = PackageInfo.require(depPkgName);
            var depFileInfo = depPkgInfo.fileInfos[dependenceInfo.fileName];
            for(var j = 0; j<names.length;j++){
                this._availableOFMap[names[j]] = depFileInfo;
            }
        }
        var names = this.objects;
        for(var i = 0;i<names.length;i++){
            this._availableOFMap[names[i]] = this;
        }
        
    }
    return this._availableOFMap;
}


/**
 * @friend
 */
FileInfo.prototype.getAvailableObjectMap = function(name){
    if(!this._availableMap){
        var objectFileInfoMap = this.getAvailableObjectFileInfoMap();
        var objectMap = {};
        for(var n in objectFileInfoMap){
            objectMap[n] = objectFileInfoMap[n].getObject(n);
        }
        this._availableMap = objectMap;
    }
    return this._availableMap;
}




/**
 * @public
 */
function getObject(name,map){
    var name = name.split('.');
    for(var i=0;map!=null && i<name.length;i++){
        map = map[name[i]];
    }
    return map;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -