e98bcdbd266ae946c94c4abe30ac342cd28a3a92
[gnome.introspection-doc-generator] / pack.js
1 #!/usr/bin/seed
2 //<script type="text/javascript">
3 /**
4  * Simple packer example
5  *
6  * compresses files listed as arguments and outputs result
7  */
8 TextStream      = imports['JSDOC/TextStream.js'].TextStream;
9 TokenReader     = imports['JSDOC/TokenReader.js'].TokenReader;
10 ScopeParser     = imports['JSDOC/ScopeParser.js'].ScopeParser;
11 TokenStream     = imports['JSDOC/TokenStream.js'].TokenStream;
12 CompressWhite   = imports['JSDOC/CompressWhite.js'].CompressWhite;
13 CompressWhite   = imports['JSDOC/Packer.js'].Packer;
14 File = imports.File.File;
15  
16  
17 function pack(str)
18 {
19     
20     var tr = new  TokenReader(  { keepDocs :true, keepWhite : true,  keepComments : true, sepIdents : true });
21     var toks = tr.tokenize(new TextStream(str) ); // dont merge xxx + . + yyyy etc.
22     var ts = new   TokenStream(toks);
23    // ts.dump();
24     var sp = new  ScopeParser(ts);
25     sp.buildSymbolTree();
26     sp.mungeSymboltree();
27     print(sp.warnings.join("\n"));
28     var out =  CompressWhite(sp.ts);
29     return out;
30     
31 }
32
33
34 var args = Array.prototype.slice.call(Seed.argv);
35 args.shift(); //seed
36 args.shift(); // pack.js
37 var cfg = {
38     files : [],
39     target : false,
40 }
41
42
43 for(var i =0; i < args.length;i++) {
44     if (args[i] == '-o') {
45         cfg.target = args[i+1];
46         i++;
47         continue;
48     }
49     cfg.files.push(args[i]);
50 }
51 var pack;
52 try {
53     pack = new Packer(cfg)
54 } catch (e) {
55     print("ERROR " + e);
56     Seed.quit();
57 }
58 if (!pack.target) {
59     print(pack.out);
60 }
61
62