JSDOC/TokenReader.js
[gnome.introspection-doc-generator] / JSDOC / Packer.vala
index 0fa5597..b6d7e28 100644 (file)
@@ -18,11 +18,9 @@ x.srcfiles = array of files (that list other files...) << not supported?
 x.target = "output.pathname.js"
 x.debugTarget = "output.pathname.debug.js"
 
-
-x.debugTranslateTarget : "/tmp/output.translate.js" << this used to be the single vs double quotes.. we may not use it in future..
-x.translateJSON: "/tmp/translate.json",
     
-x.packAll();  // writes files  etc..
+x.pack();  // writes files  etc..
     
  *</code> 
  *
@@ -77,6 +75,10 @@ namespace JSDOC
                /**
                 * @cfg {String} tmpDir  (optional) where to put the temporary files. 
                 *      if you set this, then files will not be cleaned up
+                *  
+                *  at present we need tmpfiles - as we compile multiple files into one.
+                *  we could do this in memory now, as I suspect vala will not be as bad as javascript for leakage...
+                *
                 */
                public string tmpDir = "/tmp";  // FIXME??? in ctor?
        
@@ -94,24 +96,29 @@ namespace JSDOC
                 *    usefull for debugging compressed files.
                 */
                
-               public bool keepWhite =  true;
+               public bool keepWhite =  false;
                
                
                // list of files to compile...
                Gee.ArrayList<string> files;
                
-               
-               
+               /**
+               * @cfg debug -- pretty obvious.
+               */
+                
                public string activeFile = "";
                
                
-               public  string out = ""; // if no target is specified - then this will contain the result
+               public  string outstr = ""; // if no target is specified - then this will contain the result
     
                public Packer(string target, string targetDebug = "")
                {
                        this.target = target;
                        this.targetDebug  = targetDebug;
-               
+                       this.files = new Gee.ArrayList<string>();
+                       
+                       new Lang_Class(); ///initilizaze lang..
+                        
                }
                
                public void loadSourceIndexes(Gee.ArrayList<string> indexes)
@@ -121,13 +128,19 @@ namespace JSDOC
                        }
                }
                
-               public void loadFiles(Gee.ArrayList<string> fs)
+               public void loadFiles(string[] fs)
                {
                        foreach(var f in fs) {
+                           GLib.debug("add File: %s", f);
                                this.files.add(f); //?? easier way?
                        }
                }
-       
+               public void loadFile(string f)
+               {
+                   GLib.debug("add File: %s", f);
+                       this.files.add(f); 
+                       GLib.debug("FILE LEN: %d", this.files.size);
+               }
                
                public void pack()
                {
@@ -209,13 +222,13 @@ namespace JSDOC
                        
                        print("reading %s\n",file );
                        
-                       if (FileUtils.test (file, FileTest.EXISTS) && ! FileUtils.test (file, FileTest.IS_DIR)) {
+                       if (!FileUtils.test (file, FileTest.EXISTS) || FileUtils.test (file, FileTest.IS_DIR)) {
                            print("SKIP (is not a file) %s\n ", file);
                            continue;
                        }
                       
                                var loaded_string = false;
-                               string file_contents;
+                               string file_contents = "";
                        // debug Target
                        
                        if (this.targetDebugStream !=null) {
@@ -238,7 +251,7 @@ namespace JSDOC
                        // this might happen if tmpDir is set .. 
 
                        
-                       if (true && FileUtils.test (minfile, FileTest.EXISTS)) {
+                       if (false && FileUtils.test (minfile, FileTest.EXISTS)) {
                                
                                var otv = File.new_for_path(file).query_info (FileAttribute.TIME_MODIFIED, 0).get_modification_time();
                                var mtv = File.new_for_path(minfile).query_info (FileAttribute.TIME_MODIFIED, 0).get_modification_time();
@@ -255,7 +268,7 @@ namespace JSDOC
                            
                        }
                         
-                       print("COMPRESSING ");
+                       print("COMPRESSING to %s\n", minfile);
                        //var codeComp = pack(str, 10, 0, 0);
                        if (FileUtils.test (minfile, FileTest.EXISTS)) {
                            FileUtils.remove(minfile);
@@ -264,68 +277,21 @@ namespace JSDOC
                                FileUtils.get_contents(file,out file_contents);
                        }
 
-                       var str = this.packFile(file_contents, file, minfile);
+                        this.packFile(file_contents, file, minfile);
                         
                      
                    }
                    
-                   
-                   
-                   // if we are translating, write the translations strings at the top
-                   // of the file..
-                   /*
-                   if (this.translateJSON) {
-                       
-                          
-                       print("MERGING LANGUAGE");
-                       var out = "if (typeof(_T) == 'undefined') { _T={};}\n";
-                       if (this.target) {
-                           File.write(this.target, out);
-                       } else {
-                           this.out += out;
-                       }
-                        
-                       File.write(this.translateJSON, "");
-                       for(var i=0; i < this.files.length; i++)  {
-                           var file = this.files[i];
-                           var transfile= this.tmpDir + '/' +file.replace(/\//g, '.') +'.lang.trans';
-                           var transmd5 = this.tmpDir  + '/' +file.replace(/\//g, '.') +'.lang';
-                           if (File.exists(transmd5)) {
-                               var str = File.read(transmd5);
-                               if (str.length) {
-                                   if (this.target) {
-                                       File.append(this.target, str + "\n");
-                                   } else {
-                                       this.out += str + "\n";
-                                   }
-                                   
-                               }
-                               if (this.cleanup) {
-                                   File.remove(transmd5);
-                               }
-                           }
-                           if (File.exists(transfile)) {
-                               var str = File.read(transfile);
-                               if (str.length) {
-                                   File.append(this.translateJSON, str);
-                               }
-                               if (this.cleanup) {
-                                   File.remove(transfile);
-                               }
-                           }
-                           
-                          
-                       }
-                   }
-                   */
-                   print("MERGING SOURCE");
+                 
+                   print("MERGING SOURCE\n");
                    
                    for(var i=0; i < this.files.size; i++)  {
                        var file = this.files[i];
                        var minfile = this.tmpDir + "/" + file.replace("/", ".");
                        
                        
-                       if ( FileUtils.test(minfile, FileTest.EXISTS)) {
+                       if ( !FileUtils.test(minfile, FileTest.EXISTS)) {
+                               print("skipping source %s - does not exist\n", minfile);
                            continue;
                        }
                        string str;
@@ -333,12 +299,12 @@ namespace JSDOC
                        print("using MIN FILE  %s\n", minfile);
                        if (str.length > 0) {
                            if (this.targetStream != null) {
-                                       this.targetStream.write(("//" + file + "\n").data); 
+                                       this.targetStream.write(("// " + file + "\n").data); 
                                        this.targetStream.write((str + "\n").data); 
 
                            } else {
-                               this.out += "//" + file + "\n";
-                               this.out += str + "\n";
+                               this.outstr += "//" + file + "\n";
+                               this.outstr += str + "\n";
                            }
                            
                        }
@@ -347,11 +313,16 @@ namespace JSDOC
                        }
                        
                    }
-                   print("Output file: " + this.target);
+                   if (this.target.length > 0 ) {
+                           print("Output file: " + this.target);
+                   }
                    if (this.targetDebug.length > 0) {
-                                print("Output debug file: " + this.targetDebug);
-                        }
-                   
+                                print("Output debug file: %s\n" , this.targetDebug);
+                       }  
+                       
+                       if (this.outstr.length > 0 ) {
+                               print(this.outstr);
+                       }
                     
                
                
@@ -378,7 +349,7 @@ namespace JSDOC
  
                        // we can load translation map here...
                
-                       var toks = tr.tokenize(new TextStream(str)); // dont merge xxx + . + yyyy etc.
+                       TokenArray toks = tr.tokenize(new TextStream(str)); // dont merge xxx + . + yyyy etc.
                
                
                
@@ -389,30 +360,34 @@ namespace JSDOC
 
                        //var ts = new TokenStream(toks);
                        //print(JSON.stringify(toks, null,4 )); Seed.quit();
-                       var ts = new Collapse(toks);
+                       var ts = new Collapse(toks.tokens);
+                       
+                       //ts.dumpAll("");                       print("Done collaps"); Process.exit(1);
+                       
                   // print(JSON.stringify(ts.tokens, null,4 )); Seed.quit();
                        //return;//
                        var sp = new ScopeParser(ts);
-
-                       sp.packer = this;
+                       //sp.packer = this;
                        sp.buildSymbolTree();
 
                        sp.mungeSymboltree();
-
-                       print(sp.warnings.join("\n"));
-
-               
-                       var outf = CompressWhite(new TokenStream(toks), this, this.keepWhite); // do not kill whitespace..
-               
-               
+                       sp.printWarnings();
+                       //print(sp.warnings.join("\n"));
+                       //(new TokenStream(toks.tokens)).dumpAll(""); GLib.Process.exit(1);
+                       // compress works on the original array - in theory the replacements have already been done by now 
+                       var outf = CompressWhite(new TokenStream(toks.tokens), this, this.keepWhite); // do not kill whitespace..
                
+                       
+                       print("RESULT: \n %s\n", outf);
                
                         if (outf.length > 0) {
                                FileUtils.set_contents(minfile, outf);
                                 
-                       }
+                       }  
+
                
-                       return out;
+                       return outf;
                
                
                         
@@ -422,7 +397,7 @@ namespace JSDOC
                public string md5(string str)
                {
                
-                       return GLib.compute_checksum_for_string(GLib.ChecksumType.MD5, str);
+                       return GLib.Checksum.compute_for_string(GLib.ChecksumType.MD5, str);
                
                }