Update Packer code to working copy
[gnome.introspection-doc-generator] / JSDOC / Packer.js
index 933156d..22a3757 100644 (file)
@@ -10,6 +10,7 @@ CompressWhite   = imports.CompressWhite.CompressWhite;
 Collapse        = imports.Collapse.Collapse;
 
 GLib = imports.gi.GLib;
+Gio = imports.gi.Gio;
 /**
  * @namespace JSDOC
  * @class  Packer
@@ -83,32 +84,61 @@ Packer = function(cfg)
         throw "No Files";
     }
     
-    
+    var link = false;
+    if (cfg.autoBuild) {
+        var version = 0;
+        this.files.forEach(function(f) {
+            version = Math.max(File.mtime(f), version);
+        });
+        var dirname = GLib.path_get_dirname(this.files[0]);
+        var outname = this.module ? this.module : GLib.path_get_basename(dirname);
+        this.target = dirname + '/compiled/' + outname + '-' + version + '.js';
+         if (File.exists(this.target)) {
+            print("Target file already exists: " + this.target);
+            Seed.quit();
+        }
+        this.prefix = dirname +'/';
+        this.translateJSON  = dirname + '/compiled/_translation_.js';
+        
+    }
+     
+    print(this.translateJSON);
     this.timer =  new Date() * 1;
     this.packAll();
     
+    
+    
  
 }
 Packer.prototype = {
     /**
-     * @prop srcfiles {String} file containing a list of files/or classes to use.
+     * @cfg {String} srcfiles file containing a list of files/or classes to use.
      */
     srcfile : false,
     
     /**
-     * @prop files {Array} list of files to compress (must be full path)
+     * @cfg {Array} files list of files to compress (must be full path)
      */
     files : false,
     /**
-     * @prop target {String} target to write files to - must be full path.
+     * @cfg {String} target to write files to - must be full path.
      */
     target : '',
     /**
-     * @prop debugTarget {String} target to write files debug version to (uncompacted)- must be full path.
+     * @cfg {Boolean} autoBuild - turn on autobuild feature (puts files in compiled directory,
+     * and enables translation toolkit.
+     */
+    autoBuild : false,
+     /**
+     * @cfg {String} module used with autoBuild to force a file name
+     */
+    module: false,
+    /**
+     * @cfg {String} debugTargettarget to write files debug version to (uncompacted)- must be full path.
      */
     debugTarget : '', // merged file without compression.
     /**
-     * @prop tmpDir {String} (optional) where to put the temporary files. 
+     * @cfg {String} tmpDir  (optional) where to put the temporary files. 
      *      if you set this, then files will not be cleaned up
      */
     tmpDir : '/tmp',
@@ -116,18 +146,29 @@ Packer.prototype = {
     translateJSON : '', // json based list of strings in all files.
    
     /**
-     * @prop cleanup {Boolean} (optional) clean up temp files after done - 
+     * @cfg {Boolean} cleanup  (optional) clean up temp files after done - 
      *    Defaults to false if you set tmpDir, otherwise true.
      */
     cleanup : true,  
+    /**
+     * @cfg {Boolean} keepWhite (optional) do not remove white space in output.
+     *    usefull for debugging compressed files.
+     */
+    
+    keepWhite: true,
     
     /**
-     * @prop prefix {String} (optional) prefix of directory to be stripped of when
+     * @cfg {String} prefix (optional) prefix of directory to be stripped of when
      *    Calculating md5 of filename 
      */
     prefix : '',  
     out : '', // if no target is specified - then this will contain the result
     
+    /**
+     * load a dependancy list -f option
+     * @param {String} srcfile sourcefile to parse
+     * 
+     */
     
     loadSourceFile : function(srcfile)
     {
@@ -297,6 +338,8 @@ Packer.prototype = {
             }
             
         }
+        print("Output file: " + this.target);
+        if (this.debugTarget) print("Output debug file: " + this.debugTarget);
         
          
     
@@ -319,7 +362,8 @@ Packer.prototype = {
             keepWhite : true,  
             keepComments : true, 
             sepIdents : true,
-            collapseWhite : false
+            collapseWhite : false,
+            filename : fn
         });
         this.timerPrint("START" + fn);
         
@@ -353,8 +397,9 @@ Packer.prototype = {
         print(sp.warnings.join("\n"));
         
         
-        //var out = CompressWhite(new TokenStream(toks), this, true); // do not kill whitespace..
-        var out = CompressWhite(new TokenStream(toks), this, false);
+        var out = CompressWhite(new TokenStream(toks), this, this.keepWhite); // do not kill whitespace..
+        
+        
         this.timerPrint("Compressed");
         return out;
         
@@ -416,10 +461,13 @@ Packer.prototype = {
          
         File.write(transmd5, '');
         for(v in map) {
-            File.append(transfile, l + "\n\t \"" + v + '" : "' + v + '"');
+            if (!v.length) {
+                continue;
+            }
+            File.append(transfile, l + "\n\t" + JSON.stringify(v) + " : " + JSON.stringify(v));
             l = ',';
             // strings are raw... - as the where encoded to start with!!!
-            File.append(transmd5, '_T["' + this.md5(ffn + '-' + v) + '"]="'+v+"\";\n");
+            File.append(transmd5, '_T["' + this.md5(ffn + '-' + v) + '"]='+JSON.stringify(v)+";\n");
         }
         File.append(transfile, "\n},"); // always one trailing..