JSDOC/BuildDocs.js
[gnome.introspection-doc-generator] / JSDOC / BuildDocs.js
index 88b361c..390613d 100644 (file)
@@ -10,9 +10,9 @@ File = imports.File.File;
 
 Template = imports.JsTemplate.Template.Template;
 
-Options = imports.Options.Options;
-Parser   = imports.Parser.Parser;
 
+Parser   = imports.Parser.Parser;
+TextStream = imports.TextStream.TextStream;
 TokenReader = imports.TokenReader.TokenReader;
 TokenStream = imports.TokenStream.TokenStream;
 Symbol = imports.Symbol.Symbol;
@@ -21,7 +21,7 @@ Symbol = imports.Symbol.Symbol;
 // should not realy be here -- or anywhere...??
 
 
-
+Options = false; // refer to this everywhere!
 
 
 BuildDocs = {
@@ -31,19 +31,16 @@ BuildDocs = {
     
     srcFiles : [],
     
+    
     build : function (opts)
     {
-        
-        XObject.extend(Options, opts);
-         
+        Options = opts; 
         Options.init();
         
-     
-        
         Options.LOG.inform("JsDoc Toolkit main() running at "+new Date()+".");
-        Options.LOG.inform("With options: ");
+        //Options.LOG.inform("With options: ");
         
-        if (!File.isDirectory(Options.cacheDirectory)) {   
+        if (Options.cacheDirectory.length && !File.isDirectory(Options.cacheDirectory)) {   
             File.mkdir(Options.cacheDirectory)
         }
         
@@ -52,7 +49,7 @@ BuildDocs = {
         this.symbolSet = Parser.symbols;
         
         // this currently uses the concept of publish.js...
-             
+        
         this.publish();
          
         
@@ -63,25 +60,28 @@ BuildDocs = {
     _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++) {
-            this.srcFiles = this.srcFiles.concat(
+            // add to sourcefiles..
             
-                File.list(Options.src[i] ).filter(
-                    function($) {
-                        var thisExt = $.split(".").pop().toLowerCase();
-                        return (ext.indexOf(thisExt) > -1); // || thisExt in JSDOC.handlers);
-                            // we're only interested in files with certain extensions
-                    }
-                )
-            );
+            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;
     },
 
@@ -125,16 +125,19 @@ BuildDocs = {
             
             var src = ''
             try {
+                Options.LOG.inform("reading : " + srcFile);
                 src = File.read(srcFile);
             }
             catch(e) {
-                LOG.warn("Can't read source file '"+srcFile+"': "+e.message);
+                Options.LOG.warn("Can't read source file '"+srcFile+"': "+e.message);
                 continue;
             }
 
-             
-            var tr = new TokenReader();
-            var ts = new TokenStream(tr.tokenize(src));
+            var txs = new TextStream(src);
+            
+            var tr = new TokenReader({ keepComments : true, keepWhite : true });
+            
+            var ts = new TokenStream(tr.tokenize(txs));
         
             Parser.parse(ts, srcFile);
               
@@ -150,32 +153,36 @@ BuildDocs = {
         
         
         Parser.finish();
-    }
+    },
     
      
         
     publish  : function() {
-        
+        Options.LOG.inform("Publishing");
          
         // link!!!
         
         
-        
-        if (!File.exists(Options.target))
+        Options.LOG.inform("Making directories");
+        if (!File.isDirectory(Options.target))
             File.mkdir(Options.target);
-        if (!File.exists(Options.target+"/symbols"))
+        if (!File.isDirectory(Options.target+"/symbols"))
             File.mkdir(Options.target+"/symbols");
-        if (!File.exists(Options.target+"/symbols/src"))
+        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");
         // copy everything in 'static' into 
         File.list(Options.templatesDir + '/static').forEach(function (f) {
             File.copy(Options.templatesDir + '/static/' + f, Options.target + '/' + f);
         });
-        if (!File.isDirectory(Options.target +"/json")) {
-            File.makeDir(Options.target +"/json");
-        }
         
+        
+        Options.LOG.inform("Setting up templates");
         // used to check the details of things being linked to
         Link.symbolSet = symbolSet;
         Link.base = "../";
@@ -280,7 +287,7 @@ BuildDocs = {
         
     },
 
-    publishJSON = function(file, data)
+    publishJSON : function(file, data)
     {
         // what we need to output to be usefull...
         // a) props..
@@ -344,13 +351,13 @@ BuildDocs = {
     {
         
         
-        if (!name) {
-            name = sourceFile.replace(/\.\.?[\\\/]/g, "").replace(/[\\\/]/g, "_");
-            name = name.replace(/\:/g, "_");
-        }
+        name = sourceFile.substring(Options.baseDir.length);
+        name = name.replace(/\.\.?[\\\/]/g, "").replace(/[\\\/]/g, "_");
+        name = name.replace(/\:/g, "_"); //??
+        
         
-        var pretty = PrettyPrint.toPretty(File.read(sourceFile));
-        File.write(Options.target+"/symbols/src" + prettyfile, 
+        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"/>' +