+++ /dev/null
-//<script type="text/javascript">
-/**
- This is the main container for the JSDOC application.
- @namespace
-*/
-Gio = imports.gi.Gio;
-
-XObject = imports.XObject.XObject;
-File = imports.File.File;
-
-Template = imports.JsTemplate.Template.Template;
-Link = imports.JsTemplate.Link.Link; // ?? fixme!??
-
-Parser = imports.Parser.Parser;
-TextStream = imports.TextStream.TextStream;
-TokenReader = imports.TokenReader.TokenReader;
-TokenStream = imports.TokenStream.TokenStream;
-Symbol = imports.Symbol.Symbol;
-/****************** INCLUDES ARE ALL AT THE BOTTOM OF THIS FILE!!!!! *******************/
-
-// should not realy be here -- or anywhere...??
-
-
-Options = false; // refer to this everywhere!
-
-
-BuildDocs = {
-
- VERSION : "2.0.0",
-
-
- srcFiles : [],
-
-
- build : function (opts)
- {
- Options = opts;
- Options.init();
-
- Options.LOG.inform("JsDoc Toolkit main() running at "+new Date()+".");
- //Options.LOG.inform("With options: ");
-
- if (Options.cacheDirectory.length && !File.isDirectory(Options.cacheDirectory)) {
- File.mkdir(Options.cacheDirectory)
- }
-
- Options.srcFiles = this._getSrcFiles();
- this._parseSrcFiles();
- this.symbolSet = Parser.symbols;
-
- // this currently uses the concept of publish.js...
-
- this.publish();
-
-
-
- },
-
-
- _getSrcFiles : function()
- {
- this.srcFiles = [];
- var _this = this;
- var ext = ["js"];
- if (Options.ext) {
- ext = Options.ext.split(",").map(function($) {return $.toLowerCase()});
- }
-
- for (var i = 0; i < Options.src.length; i++) {
- // add to sourcefiles..
-
- File.list(Options.src[i] ).forEach(function($) {
- if (Options['exclude-src'].indexOf($) > -1) {
- return;
- }
- var thisExt = $.split(".").pop().toLowerCase();
- if (ext.indexOf(thisExt) < 0) {
- return;
- }
- _this.srcFiles.push(Options.src[i] + '/' + $);
- });
-
- }
- //Seed.print(JSON.stringify(this.srcFiles, null,4));Seed.quit();
- return this.srcFiles;
- },
-
- _parseSrcFiles : function()
- {
- Parser.init();
-
- for (var i = 0, l = this.srcFiles.length; i < l; i++) {
-
- var srcFile = this.srcFiles[i];
-
-
- var cacheFile = Options.cacheDirectory + srcFile.replace(/\//g, '_') + ".cache";
-
- //println(cacheFile);
- // disabled at present!@!!
-
- if (false && !Options.disablecache && File.exists(cacheFile)) {
- // check filetime?
-
- var c_mt = File.getTimes(cacheFile);
- var o_mt = File.getTimes(srcFile);
- //println(c_mt.toSource());
- // println(o_mt.toSource());
-
- // this check does not appear to work according to the doc's - need to check it out.
-
- if (c_mt[0] > o_mt[0]) { // cached time > original time!
- // use the cached mtimes..
- var syms = JSON.parse(File.read(cacheFile));
-
- throw "Conversion of cache not done yet!";
-
- for (var sy in syms) {
- //println("ADD:" + sy );
- Parser.symbols.addSymbol(syms[sy]);
- }
- continue;
- }
- }
-
- var src = ''
- try {
- Options.LOG.inform("reading : " + srcFile);
- src = File.read(srcFile);
- }
- catch(e) {
- Options.LOG.warn("Can't read source file '"+srcFile+"': "+e.message);
- continue;
- }
-
- var txs = new TextStream(src);
-
- var tr = new TokenReader({ keepComments : true, keepWhite : true });
-
- var ts = new TokenStream(tr.tokenize(txs));
-
- Parser.parse(ts, srcFile);
-
- //var outstr = JSON.stringify(
- // Parser.filesSymbols[srcFile]._index
- //);
- //File.write(cacheFile, outstr);
-
-
- // }
- }
-
-
-
- Parser.finish();
- },
-
-
-
- publish : function() {
- Options.LOG.inform("Publishing");
-
- // link!!!
-
-
- Options.LOG.inform("Making directories");
- if (!File.isDirectory(Options.target))
- File.mkdir(Options.target);
- if (!File.isDirectory(Options.target+"/symbols"))
- File.mkdir(Options.target+"/symbols");
- if (!File.isDirectory(Options.target+"/symbols/src"))
- File.mkdir(Options.target+"/symbols/src");
-
- if (!File.isDirectory(Options.target +"/json")) {
- File.mkdir(Options.target +"/json");
- }
-
- Options.LOG.inform("Copying files from static: " +Options.templateDir);
- // copy everything in 'static' into
- File.list(Options.templateDir + '/static').forEach(function (f) {
- Options.LOG.inform("Copy " + Options.templateDir + '/static/' + f + ' to ' + Options.target + '/' + f);
- File.copyFile(Options.templateDir + '/static/' + f, Options.target + '/' + f, Gio.FileCopyFlags.OVERWRITE);
- });
-
-
- Options.LOG.inform("Setting up templates");
- // used to check the details of things being linked to
- Link.symbolSet = this.symbolSet;
- Link.base = "../";
-
- var classTemplate = new Template({
- templateFile : Options.templateDir + "/class.tmpl",
- Link : Link
- });
- var classesTemplate = new Template({
- templateFile : Options.templateDir +"/allclasses.tmpl",
- Link : Link
- });
- var classesindexTemplate = new Template({
- templateFile : Options.templateDir +"/index.tmpl",
- Link : Link
- });
- var fileindexTemplate = new Template({
- templateFile : Options.templateDir +"/allfiles.tmpl",
- Link: Link
- });
-
-
- classTemplate.symbolSet = this.symbolSet;
-
-
- function hasNoParent($) {
- return ($.memberOf == "")
- }
- function isaFile($) {
- return ($.is("FILE"))
- }
- function isaClass($) {
- return ($.is("CONSTRUCTOR") || $.isNamespace);
- }
-
- var symbols = this.symbolSet.toArray();
-
- var files = Options.srcFiles;
-
- for (var i = 0, l = files.length; i < l; i++) {
- var file = files[i];
- var targetDir = Options.target + "/symbols/src/";
- this.makeSrcFile(file, targetDir);
- }
-
- var classes = symbols.filter(isaClass).sort(makeSortby("alias"));
-
- var classesIndex = classesTemplate.process(classes); // kept in memory
-
-
-
- for (var i = 0, l = classes.length; i < l; i++) {
- var symbol = classes[i];
- var output = "";
-
- File.write(Options.target+"/symbols/" +symbol.alias+'.' + Options.publishExt ,
- classTemplate.process(symbol));
-
- print("write " + Options.target+"/symbols/" +symbol.alias+'.' + Options.publishExt);
-
- // dump out a
-
- this.publishJSON(Options.target+"/json/", symbol.alias+'.json', symbol)
-
-
-
- }
-
- // regenrate the index with different relative links
- Link.base = "";
- var classesIndex = classesTemplate.process(classes);
-
-
-
- File.write(Options.target + "/index."+ Options.publishExt,
- classesindexTemplate.process(classes)
- );
-
- // blank everything???? classesindexTemplate = classesIndex = classes = null;
-
-
-
- var documentedFiles = symbols.filter(function ($) {
- return ($.is("FILE"))
- });
-
- var allFiles = [];
-
- for (var i = 0; i < files.length; i++) {
- allFiles.push(new Symbol(files[i], [], "FILE", new JSDOC.DocComment("/** */")));
- }
-
- for (var i = 0; i < documentedFiles.length; i++) {
- var offset = files.indexOf(documentedFiles[i].alias);
- allFiles[offset] = documentedFiles[i];
- }
-
- allFiles = allFiles.sort(makeSortby("name"));
- File.write(Options.target , "/files."+Options.publishExt,
- fileindexTemplate.process(allFiles)
- );
-
- },
-
- publishJSON : function(file, data)
- {
- // what we need to output to be usefull...
- // a) props..
- var cfgProperties = [];
- if (!data.comment.getTag('singleton').length) {
- cfgProperties = data.configToArray();
- cfgProperties = cfgProperties.sort(makeSortby("name"));
-
- }
- var props = [];
- //println(cfgProperties.toSource());
- var p ='';
- for(var i =0; i < cfgProperties.length;i++) {
- p = cfgProperties[i];
- props.push( {
- name : p.name,
- type : p.type,
- desc : p.desc,
- memberOf : p.memberOf == data.alias ? '' : p.memberOf
- });
- }
-
-
- var ownEvents = data.methods.filter( function(e){
- return e.isEvent && !e.comment.getTag('hide').length;
- }).sort(makeSortby("name"));
-
-
- var events = [];
- var m;
- for(var i =0; i < ownEvents.length;i++) {
- m = ownEvents[i];
- events.push( {
- name : m.name.substring(1),
- sig : makeFuncSkel(m.params),
- type : 'function',
- desc : m.desc
- });
- }
- //println(props.toSource());
- // we need to output:
- //classname => {
- // propname =>
- // type=>
- // desc=>
- // }
-
- var ret = {
- props : props,
- events: events
- };
- File.write(file, JSON.stringify(ret, null, 2 ));
-
-
- // b) methods
- // c) events
-
-
- },
- makeSrcFile: function(sourceFile)
- {
-
-
- name = sourceFile.substring(Options.baseDir.length+1);
- name = name.replace(/\.\.?[\\\/]/g, "").replace(/[\\\/]/g, "_");
-
- name = name.replace(/\:/g, "_"); //??
-
- Options.LOG.inform("Write Source file : " + Options.target+"/symbols/src/" + name);
- var pretty = imports.PrettyPrint.toPretty(File.read(sourceFile));
- File.write(Options.target+"/symbols/src/" + name,
- '<html><head>' +
- '<title>' + sourceFile + '</title>' +
- '<link rel="stylesheet" type="text/css" href="../../../highlight-js.css"/>' +
- '</head><body class="highlightpage">' +
- pretty +
- '</body></html>');
- }
-
-
-};
-
-
-
-
-
-
-
-
-
-
-