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