bjstester.js
[app.Builder.js] / bjstester.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.stringify(args, null,4));
30 //Seed.quit();
31
32
33 if (File.isFile(args[0])) {
34     bjstest(args[0]);    
35 } else { 
36   trhow "argument is not file";
37 }
38
39
40 print( " diff -w -u /tmp/rconv_orig /tmp/rconv_gen/");
41
42
43
44 function createTest(fn) {
45     
46     // does it have a .bjs file..
47     var bjs = fn.replace(/\.js$/, '.bjs');
48     if (!File.exists(bjs)) {
49         return true;
50         
51     } 
52     
53     
54     print("converting : " + fn);
55     // outputs to two directories..
56     if (!File.exists('/tmp/rconv_orig')) {
57         File.mkdir('/tmp/rconv_orig');
58     }
59       if (!File.exists('/tmp/rconv_genbjs')) {
60         File.mkdir('/tmp/rconv_genbjs');
61     }
62     if (!File.exists('/tmp/rconv_gen')) {
63         File.mkdir('/tmp/rconv_gen');
64     }
65     
66     
67     var tr = new  TokenReader(  { 
68         keepDocs :true, 
69         keepWhite : true,  
70         keepComments : true, 
71         sepIdents : false,
72         collapseWhite : false,
73         filename : args[0],
74         ignoreBadGrammer: true
75     });
76     
77     var str = File.read(fn)
78     File.write('/tmp/rconv_orig/' + GLib.basename(fn) , str);
79     var toks = tr.tokenize(new TextStream(str));  
80     
81     
82     var rf = new JsParser(toks);
83     //print(JSON.stringify(rf.tokens, null,4));Seed.quit();
84     rf.parse();
85     
86     
87     if (File.exists('/tmp/rconv_genbjs/' + GLib.basename(fn).replace(/\.js$/,'.bjs') )) {
88         File.remove('/tmp/rconv_genbjs/' + GLib.basename(fn).replace(/\.js$/,'.bjs') );
89     }
90     File.write('/tmp/rconv_genbjs/' + GLib.basename(fn).replace(/\.js$/,'.bjs'),
91                JSON.stringify(rf.cfg,null,4));
92
93     
94      
95     // now try and render it back to javascript.
96     var rclass = imports.JsRender[rf.cfg.type][rf.cfg.type];
97     rf.cfg.path = fn;
98     var render = new rclass(rf.cfg);
99     var res = render.toSource()
100     //print();
101     if (File.exists('/tmp/rconv_gen/' + GLib.basename(fn) )) {
102         File.remove('/tmp/rconv_gen/' + GLib.basename(fn) );
103     }
104     
105     File.write('/tmp/rconv_gen/' + GLib.basename(fn) , res);
106 }
107 //print(JSON.stringify(rf.cfg, null,4));
108  
109