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

📄 docs.js

📁 尚学堂oa项目源码,用户管理
💻 JS
📖 第 1 页 / 共 2 页
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.docs");dojo.require("dojo.io.*");dojo.require("dojo.event.topic");dojo.require("dojo.rpc.JotService");dojo.require("dojo.dom");dojo.require("dojo.uri.Uri");dojo.require("dojo.Deferred");dojo.require("dojo.DeferredList");/* * TODO: * * Package summary needs to compensate for "is" * Handle host environments * Deal with dojo.widget weirdness * Parse parameters * Limit function parameters to only the valid ones (Involves packing parameters onto meta during rewriting) * */dojo.docs = new function() {	this._url = dojo.uri.dojoUri("docscripts");	this._rpc = new dojo.rpc.JotService;	this._rpc.serviceUrl = dojo.uri.dojoUri("docscripts/jsonrpc.php");};dojo.lang.mixin(dojo.docs, {	_count: 0,	_callbacks: {function_names: []},	_cache: {}, // Saves the JSON objects in cache	require: function(/*String*/ require, /*bool*/ sync) {		dojo.debug("require(): " + require);		var parts = require.split("/");				var size = parts.length;		var deferred = new dojo.Deferred;		var args = {			mimetype: "text/json",			load: function(type, data){				dojo.debug("require(): loaded for " + require);								if(parts[0] != "function_names") {					for(var i = 0, part; part = parts[i]; i++){						data = data[part];					}				}				deferred.callback(data);			},			error: function(){				deferred.errback();			}		};		if(location.protocol == "file:"){			if(size){				if(parts[parts.length - 1] == "documentation"){					parts[parts.length - 1] = "meta";				}							if(parts[0] == "function_names"){					args.url = [this._url, "local_json", "function_names"].join("/");				}else{					var dirs = parts[0].split(".");					args.url = [this._url, "local_json", dirs[0]].join("/");					if(dirs.length > 1){						args.url = [args.url, dirs[1]].join(".");					}				}			}		}				dojo.io.bind(args);		return deferred;	},	getFunctionNames: function(){		return this.require("function_names"); // dojo.Deferred	},	unFormat: function(/*String*/ string){		var fString = string;		if(string.charAt(string.length - 1) == "_"){			fString = [string.substring(0, string.length - 1), "*"].join("");		}		return fString;	},	getMeta: function(/*String*/ pkg, /*String*/ name, /*Function*/ callback, /*String?*/ id){		// summary: Gets information about a function in regards to its meta data		if(typeof name == "function"){			// pId: a			// pkg: ignore			id = callback;			callback = name;			name = pkg;			pkg = null;			dojo.debug("getMeta(" + name + ")");		}else{			dojo.debug("getMeta(" + pkg + "/" + name + ")");		}				if(!id){			id = "_";		}	},	_withPkg: function(/*String*/ type, /*Object*/ data, /*Object*/ evt, /*Object*/ input, /*String*/ newType){		dojo.debug("_withPkg(" + evt.name + ") has package: " + data[0]);		evt.pkg = data[0];		if("load" == type && evt.pkg){			evt.type = newType;		}else{			if(evt.callbacks && evt.callbacks.length){				evt.callbacks.shift()("error", {}, evt, evt.input);			}		}	},	_gotMeta: function(/*String*/ type, /*Object*/ data, /*Object*/ evt){		dojo.debug("_gotMeta(" + evt.name + ")");		var cached = dojo.docs._getCache(evt.pkg, evt.name, "meta", "functions", evt.id);		if(cached.summary){			data.summary = cached.summary;		}		if(evt.callbacks && evt.callbacks.length){			evt.callbacks.shift()(type, data, evt, evt.input);		}	},	getSrc: function(/*String*/ name, /*Function*/ callback, /*String?*/ id){		// summary: Gets src file (created by the doc parser)		dojo.debug("getSrc(" + name + ")");		if(!id){			id = "_";		}	},	getDoc: function(/*String*/ name, /*Function*/ callback, /*String?*/ id){		// summary: Gets external documentation stored on Jot for a given function		dojo.debug("getDoc(" + name  + ")");		if(!id){			id = "_";		}		var input = {};		input.type = "doc";		input.name = name;		input.callbacks = [callback];	},	_gotDoc: function(/*String*/ type, /*Array*/ data, /*Object*/ evt, /*Object*/ input){		dojo.debug("_gotDoc(" + evt.type + ")");				evt[evt.type] = data;		if(evt.expects && evt.expects.doc){			for(var i = 0, expect; expect = evt.expects.doc[i]; i++){				if(!(expect in evt)){					dojo.debug("_gotDoc() waiting for more data");					return;				}			}		}				var cache = dojo.docs._getCache(evt.pkg, "meta", "functions", evt.name, evt.id, "meta");		var description = evt.fn.description;		cache.description = description;		data = {			returns: evt.fn.returns,			id: evt.id,			variables: []		}		if(!cache.parameters){			cache.parameters = {};		}		for(var i = 0, param; param = evt.param[i]; i++){			var fName = param["DocParamForm/name"];			if(!cache.parameters[fName]){				cache.parameters[fName] = {};			}			cache.parameters[fName].description = param["DocParamForm/desc"]		}		data.description = cache.description;		data.parameters = cache.parameters;				evt.type = "doc";			if(evt.callbacks && evt.callbacks.length){			evt.callbacks.shift()("load", data, evt, input);		}	},	getPkgDoc: function(/*String*/ name, /*Function*/ callback){		// summary: Gets external documentation stored on Jot for a given package		dojo.debug("getPkgDoc(" + name + ")");		var input = {};	},	getPkgInfo: function(/*String*/ name, /*Function*/ callback){		// summary: Gets a combination of the metadata and external documentation for a given package		dojo.debug("getPkgInfo(" + name + ")");		var input = {			expects: {				pkginfo: ["pkgmeta", "pkgdoc"]			},			callback: callback		};		dojo.docs.getPkgMeta(input, name, dojo.docs._getPkgInfo);		dojo.docs.getPkgDoc(input, name, dojo.docs._getPkgInfo);	},	_getPkgInfo: function(/*String*/ type, /*Object*/ data, /*Object*/ evt){		dojo.debug("_getPkgInfo() for " + evt.type);		var input = {};		var results = {};		if(typeof key == "object"){			input = key;			input[evt.type] = data;			if(input.expects && input.expects.pkginfo){				for(var i = 0, expect; expect = input.expects.pkginfo[i]; i++){					if(!(expect in input)){						dojo.debug("_getPkgInfo() waiting for more data");						return;					}				}			}			results = input.pkgmeta;			results.description = input.pkgdoc;		}		if(input.callback){			input.callback("load", results, evt);		}	},	getInfo: function(/*String*/ name, /*Function*/ callback){		dojo.debug("getInfo(" + name + ")");		var input = {			expects: {				"info": ["meta", "doc"]			},			callback: callback		}		dojo.docs.getMeta(input, name, dojo.docs._getInfo);		dojo.docs.getDoc(input, name, dojo.docs._getInfo);	},	_getInfo: function(/*String*/ type, /*String*/ data, /*Object*/ evt, /*Object*/ input){		dojo.debug("_getInfo(" + evt.type + ")");		if(input && input.expects && input.expects.info){			input[evt.type] = data;			for(var i = 0, expect; expect = input.expects.info[i]; i++){				if(!(expect in input)){					dojo.debug("_getInfo() waiting for more data");					return;				}			}		}		if(input.callback){			input.callback("load", dojo.docs._getCache(evt.pkg, "meta", "functions", evt.name, evt.id, "meta"), evt, input);		}	},	_getMainText: function(/*String*/ text){		// summary: Grabs the innerHTML from a Jot Rech Text node		dojo.debug("_getMainText()");		return text.replace(/^<html[^<]*>/, "").replace(/<\/html>$/, "").replace(/<\w+\s*\/>/g, "");	},	getPackageMeta: function(/*Object*/ input){		dojo.debug("getPackageMeta(): " + input.package);		return this.require(input.package + "/meta", input.sync);	},	getFunctionMeta: function(/*Object*/ input){		var package = input.package || "";		var name = input.name;		var id = input.id || "_";		dojo.debug("getFunctionMeta(): " + name);		if(!name) return;		if(package){			return this.require(package + "/meta/functions/" + name + "/" + id + "/meta");		}else{			this.getFunctionNames();		}	},	getFunctionDocumentation: function(/*Object*/ input){		var package = input.package || "";		var name = input.name;		var id = input.id || "_";		dojo.debug("getFunctionDocumentation(): " + name);				if(!name) return;				if(package){			return this.require(package + "/meta/functions/" + name + "/" + id + "/documentation");		}	},	_onDocSearch: function(/*Object*/ input){		var _this = this;		var name = input.name.toLowerCase();		if(!name) return;		this.getFunctionNames().addCallback(function(data){			dojo.debug("_onDocSearch(): function names loaded for " + name);			var output = [];			var list = [];			var closure = function(pkg, fn) {				return function(data){					dojo.debug("_onDocSearch(): package meta loaded for: " + pkg);					if(data.functions){						var functions = data.functions;						for(var key in functions){							if(fn == key){								var ids = functions[key];								for(var id in ids){									var fnMeta = ids[id];									output.push({										package: pkg,										name: fn,										id: id,										summary: fnMeta.summary									});								}							}						}					}					return output;				}			}			pkgLoop:			for(var pkg in data){				if(pkg.toLowerCase() == name){

⌨️ 快捷键说明

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