Revert "File.js"
[app.Builder.js] / rconv.js
index f9cf058..a7be79d 100644 (file)
--- a/rconv.js
+++ b/rconv.js
@@ -6,16 +6,19 @@
  *
  * Needs to test a while directory convert to-><-from and compare..
  *
+ * 
+ *
+ * 
  *
  */
 
-var RooFile = imports.JSDOC.JsParser.JsParser;
+var JsParser = imports.JsParser.JsParser;
 var TokenReader = imports.JSDOC.TokenReader.TokenReader;
 var TextStream = imports.JSDOC.TextStream.TextStream;
 
 var File = imports.File.File;
 
-
+var GLib = imports.gi.GLib;
 
 
 
@@ -27,37 +30,88 @@ args.shift();
 //Seed.quit();
 
 
-
-var tr = new  TokenReader(  { 
-    keepDocs :true, 
-    keepWhite : true,  
-    keepComments : true, 
-    sepIdents : false,
-    collapseWhite : true,
-    filename : args[0],
-    ignoreBadGrammer: true
-});
-
-var str = File.read(args[0])
-
-var toks = tr.tokenize(new TextStream(str));  
-
-
-var rf = new RooFile(toks);
-//print(JSON.stringify(rf.tokens, null,4));Seed.quit();
-
-
-
-
-rf.parse();
-
-print("------------ in ------------------");
-print(str);
-print("------------ out ------------------");
-
-print(JSON.stringify(rf.cfg, null,4));
-
-print("------------ was ------------------");
-
-print(File.read(args[0].replace(/\.js$/,'.bjs')));
-
+if (File.isFile(args[0])) {
+    createTest(args[0], true);    
+} else { 
+    
+    File.list(args[0]).forEach(function(a) {
+        if (!a.match(/\.js$/)) {
+            return;
+        }
+        //print(args[0] + '/' + a);
+        createTest(args[0] + '/' + a);    
+        
+    })
+}
+
+
+print( " diff -w -u /tmp/rconv_orig /tmp/rconv_gen/");
+
+
+
+function createTest(fn, force) {
+    
+    // does it have a .bjs file..
+    var bjs = fn.replace(/\.js$/, '.bjs');
+    if (!force && !File.exists(bjs)) {
+        return true;
+        
+    } 
+    
+    
+    print("converting : " + fn);
+    // outputs to two directories..
+    if (!File.exists('/tmp/rconv_orig')) {
+        File.mkdir('/tmp/rconv_orig');
+    }
+      if (!File.exists('/tmp/rconv_genbjs')) {
+        File.mkdir('/tmp/rconv_genbjs');
+    }
+    if (!File.exists('/tmp/rconv_gen')) {
+        File.mkdir('/tmp/rconv_gen');
+    }
+    
+    
+    var tr = new  TokenReader(  { 
+        keepDocs :true, 
+        keepWhite : true,  
+        keepComments : true, 
+        sepIdents : false,
+        collapseWhite : false,
+        filename : args[0],
+        ignoreBadGrammer: true
+    });
+    
+    var str = File.read(fn)
+    File.write('/tmp/rconv_orig/' + GLib.basename(fn) , str);
+    var toks = tr.tokenize(new TextStream(str));  
+    
+    
+    var rf = new JsParser(toks);
+    //print(JSON.stringify(rf.tokens, null,4));Seed.quit();
+    rf.parse();
+    
+    
+    if (File.exists('/tmp/rconv_genbjs/' + GLib.basename(fn).replace(/\.js$/,'.bjs') )) {
+        File.remove('/tmp/rconv_genbjs/' + GLib.basename(fn).replace(/\.js$/,'.bjs') );
+    }
+    File.write('/tmp/rconv_genbjs/' + GLib.basename(fn).replace(/\.js$/,'.bjs'),
+               JSON.stringify(rf.cfg,null,4));
+
+    
+     
+    // now try and render it back to javascript.
+    var rclass = imports.JsRender[rf.cfg.type][rf.cfg.type];
+    rf.cfg.path = fn;
+    var render = new rclass(rf.cfg);
+    var res = render.toSource()
+    //print();
+    if (File.exists('/tmp/rconv_gen/' + GLib.basename(fn) )) {
+        File.remove('/tmp/rconv_gen/' + GLib.basename(fn) );
+    }
+    
+    File.write('/tmp/rconv_gen/' + GLib.basename(fn) , res);
+}
+//print(JSON.stringify(rf.cfg, null,4));