a094a3f5abd7552c94127b64fb9cb0aa41a6a022
[app.Builder.js] / rconv.js
1 /**
2  *
3  * This is a test file to convert appbuilder style application code
4  *  into javascript structures.
5  *
6  *
7  * Needs to test a while directory convert to-><-from and compare..
8  *
9  * 
10  *
11  * 
12  *
13  */
14
15 var JsParser = imports.JsParser.JsParser;
16 var TokenReader = imports.JSDOC.TokenReader.TokenReader;
17 var TextStream = imports.JSDOC.TextStream.TextStream;
18
19 var File = imports.File.File;
20
21 var GLib = imports.gi.GLib;
22
23
24
25 var args = Array.prototype.slice.call(Seed.argv);
26
27 args.shift();
28 args.shift();
29 //print(JSON.(args, null,4));
30 //Seed.quit();
31
32
33 if (File.isFile(args[0])) {
34     createTest(args[0], true);    
35 } else { 
36     
37     File.list(args[0]).forEach(function(a) {
38         if (!a.match(/\.js$/)) {
39             return;
40         }
41         //print(args[0] + '/' + a);
42         createTest(args[0] + '/' + a);    
43         
44     })
45 }
46
47
48 print( " diff -w -u /tmp/rconv_orig /tmp/rconv_gen/");
49
50
51
52 function createTest(fn, force) {
53     
54     // does it have a .bjs file..
55     var bjs = fn.replace(/\.js$/, '.bjs');
56     if (!force && !File.exists(bjs)) {
57         return true;
58         
59     } 
60     
61     
62     print("converting : " + fn);
63     // outputs to two directories..
64     if (!File.exists('/tmp/rconv_orig')) {
65         File.mkdir('/tmp/rconv_orig');
66     }
67       if (!File.exists('/tmp/rconv_genbjs')) {
68         File.mkdir('/tmp/rconv_genbjs');
69     }
70     if (!File.exists('/tmp/rconv_gen')) {
71         File.mkdir('/tmp/rconv_gen');
72     }
73     
74     
75     var tr = new  TokenReader(  { 
76         keepDocs :true, 
77         keepWhite : true,  
78         keepComments : true, 
79         sepIdents : false,
80         collapseWhite : false,
81         filename : args[0],
82         ignoreBadGrammer: true
83     });
84     
85     var str = File.read(fn)
86     File.write('/tmp/rconv_orig/' + GLib.basename(fn) , str);
87     var toks = tr.tokenize(new TextStream(str));  
88     
89     
90     var rf = new JsParser(toks);
91     //print(JSON.(rf.tokens, null,4));Seed.quit();
92     rf.parse();
93     
94     
95     if (File.exists('/tmp/rconv_genbjs/' + GLib.basename(fn).replace(/\.js$/,'.bjs') )) {
96         File.remove('/tmp/rconv_genbjs/' + GLib.basename(fn).replace(/\.js$/,'.bjs') );
97     }
98     File.write('/tmp/rconv_genbjs/' + GLib.basename(fn).replace(/\.js$/,'.bjs'),
99                JSON.(rf.cfg,null,4));
100
101     
102      
103     // now try and render it back to javascript.
104     var rclass = imports.JsRender[rf.cfg.type][rf.cfg.type];
105     rf.cfg.path = fn;
106     var render = new rclass(rf.cfg);
107     var res = render.toSource()
108     //print();
109     if (File.exists('/tmp/rconv_gen/' + GLib.basename(fn) )) {
110         File.remove('/tmp/rconv_gen/' + GLib.basename(fn) );
111     }
112     
113     File.write('/tmp/rconv_gen/' + GLib.basename(fn) , res);
114 }
115 //print(JSON.(rf.cfg, null,4));
116  
117