JSDOC/BuildDocs.js
[gnome.introspection-doc-generator] / JSDOC / BuildDocs.js
1 //<script type="text/javascript">
2 /**
3         This is the main container for the JSDOC application.
4         @namespace
5 */
6
7
8 XObject = imports.XObject.XObject;
9 File = imports.File.File;
10
11 Options = imports.Options.Options;
12 Parser   = imports.Parser.Parser;
13
14 TokenReader = imports.TokenReader.TokenReader;
15 TokenStream = imports.TokenStream.TokenStream;
16 /******************    INCLUDES ARE ALL AT THE BOTTOM OF THIS FILE!!!!! *******************/
17
18 // should not realy be here -- or anywhere...??
19
20
21
22
23
24 BuildDocs = {
25     
26     VERSION : "2.0.0",
27     
28     
29     srcFiles : [],
30     
31     build : function (opts)
32     {
33         
34         XObject.extend(Options, opts);
35          
36         Options.init();
37         
38     
39          
40         
41         Options.LOG.inform("JsDoc Toolkit main() running at "+new Date()+".");
42         Options.LOG.inform("With options: ");
43         
44         if (!File.isDirectory(Options.cacheDirectory)) {   
45             File.mkdir(Options.cacheDirectory)
46         }
47         
48         Options.srcFiles = this._getSrcFiles();
49         this._parseSrcFiles();
50         this.symbolSet = Parser.symbols;
51          
52              
53         
54          
55         
56         
57     },
58     
59     
60     _getSrcFiles : function() 
61     {
62         this.srcFiles = [];
63         
64         var ext = ["js"];
65         if (JSDOC.opt.x) {
66             ext = JSDOC.opt.x.split(",").map(function($) {return $.toLowerCase()});
67         }
68         
69         for (var i = 0; i < JSDOC.opt._.length; i++) {
70             this.srcFiles = this.srcFiles.concat(
71                 IO.ls(JSDOC.opt._[i], JSDOC.opt.r).filter(
72                     function($) {
73                         var thisExt = $.split(".").pop().toLowerCase();
74                         return (ext.indexOf(thisExt) > -1 || thisExt in JSDOC.handlers); // we're only interested in files with certain extensions
75                     }
76                 )
77             );
78         }
79         
80         return this.srcFiles;
81     },
82
83     _parseSrcFiles : function() 
84     {
85         Parser.init();
86         
87         for (var i = 0, l = this.srcFiles.length; i < l; i++) {
88             
89             var srcFile = this.srcFiles[i];
90             
91             
92             var cacheFile = Options.cacheDirectory + srcFile.replace(/\//g, '_') + ".cache";
93             
94             //println(cacheFile);
95             
96             if (!Options.disablecache  && File.exists(cacheFile)) {
97                 // check filetime?
98                 
99                 var c_mt = File.getTimes(cacheFile);
100                 var o_mt = File.getTimes(srcFile);
101                 //println(c_mt.toSource());
102                // println(o_mt.toSource());
103                
104                 // this check does not appear to work according to the doc's - need to check it out.
105                
106                 if (c_mt[0] > o_mt[0]) { // cached time  > original time!
107                     // use the cached mtimes..
108                     var syms =  JSON.parse(File.read(cacheFile));
109                     
110                     throw "Conversion of cache not done yet!";
111                     
112                     for (var sy in syms) {
113                         //println("ADD:" + sy );
114                        Parser.symbols.addSymbol(syms[sy]);
115                     }
116                     continue;
117                 }
118             }
119             
120             var src = ''
121             try {
122                 src = File.read(srcFile);
123             }
124             catch(e) {
125                 LOG.warn("Can't read source file '"+srcFile+"': "+e.message);
126                 continue;
127             }
128
129              
130             var tr = new TokenReader();
131             var ts = new TokenStream(tr.tokenize(src));
132         
133             Parser.parse(ts, srcFile);
134                  //  println("Symbols: " + JSDOC.Parser.symbols.keys().toSource());
135             var outstr = JSDOC.prettyDump(
136                 JSDOC.toQDump(JSDOC.Parser.filesSymbols[JSDOC.Symbol.srcFile]._index,'{','}'))
137             
138             
139             //if (outstr.length > 3) {
140                 // dont cache crap..
141                 File.write(cacheFile, outstr);
142             //}
143                 
144     //          }
145         }
146         
147         
148         
149         JSDOC.Parser.finish();
150     }
151     
152      
153         
154      
155      
156     
157 };
158   
159
160
161
162
163
164  
165
166
167
168