Beispiel #1
0
function parseMenuFromNS(ns, id){
	var children = [],
		i = 1;

	u.forOwn(ns.nsnodes || {}, function(val, key){
		if(val.$class){
			var node = {
				id: id + i,
				name: key,
				url: val.$class
			};
			if(val.singleton){
				node.singleton = true;
				node.image = singletonFile;
				if(val.nsnodes){
					node.expanded = false;
					node.children = parseMenuFromNS(val, id + i);
				}
			}
			if(val.interface){
				node.image = interfaceFile;
			}
			children.push(node);
		}else{
			children.push({
				id: id + i,
				image: imgCloseFolder,
				name: key,
				expanded: false,
				children: parseMenuFromNS(val, id + i)
			});
		}
		i++;
	});
	return children;
}
Beispiel #2
0
function docsBuilder(pattern, options){
	var files = [],
		blocks = [],
		docsData = {},
		namespaces = {nsnodes:{}},
		autoComplete = [],
		docReader;

	switch(options.readerType){
		case availableReaders.javaDoc:
		default:
			docReader = jReader;
			break;
	}

	console.log("========================================================".green);
	console.log("========================================================".green);
	console.log("    Begin files reading...");
	console.log("========================================================".green);

	globby.sync(pattern, { cwd: options.cwd || process.cwd() }).forEach( function( file ) {
		var fileName = path.resolve(file);
		console.log(" -- Reading: ".green + fileName);
		blocks = blocks.concat(docReader.parseContent(fileName));
	});

	console.log("========================================================".green);
	console.log("    Building references...");
	console.log("    Blocks: " + blocks.length);

	blocks.forEach(function(block){
		var meta = docReader.readDocumentationMetadata(block);
		if(meta.$class && !docsData[meta.$class]){
			docsData[meta.$class] = meta;
			docsData[meta.$class].methods = [];
			docsData[meta.$class].events = [];
			docsData[meta.$class].properties = [];
			docsData[meta.$class].configs = [];
			autoComplete.push({
				value: meta.$class,
				type: "class",
				key: meta.$class
			});
		}
		if(meta.member && docsData[meta.member]){
			var row = {
				value: meta.member,
				isPrivate: meta.private,
				isProtected: meta.protected
			};
			if(meta.method){
				row.type = "method";
				row.key = meta.method;
				docsData[meta.member].methods.push(meta);
			}
			if(meta.event){
				row.type = "event";
				row.key = meta.event;
				docsData[meta.member].events.push(meta);
			}
			if(meta.property){
				row.type = "property";
				row.key = meta.property;
				docsData[meta.member].properties.push(meta);
			}
			if(meta.config){
				row.type = "config";
				row.key = meta.config;
				docsData[meta.member].configs.push(meta);
			}
			autoComplete.push(row);
		}
	});

	u.forOwn(docsData, function(data, cls){
		setNs(namespaces, cls, data);
	});

	var menuData = parseMenuFromNS(namespaces, "docstree");

	if(menuData.length){
		menuData[0].expanded = true;
		if(!menuData[0].singleton) menuData[0].image = imgOpenFolder;
	}

	console.log("    Building references Complete...");
	console.log("========================================================".green);
	console.log("    Reading Complete...");
	console.log("========================================================".green);

	console.log("========================================================".green);
	console.log("    Writing Files...");
	console.log("========================================================".green);

	builder.write(docsData, menuData, autoComplete, options.dest);

	console.log("========================================================".green);
	console.log("    Writing Complete...");
	console.log("========================================================".green);
	console.log("========================================================".green);
}