JSDOC/BuildDocs.js
[gnome.introspection-doc-generator] / docs.js
diff --git a/docs.js b/docs.js
index d1299e5..a34e3ef 100644 (file)
--- a/docs.js
+++ b/docs.js
@@ -3,14 +3,17 @@
 Gtk = imports.gi.Gtk;
 Gio = imports.gi.Gio;
 Gdk = imports.gi.Gdk;
-XObject = imports.XObject.XObject;
-
-
 
+// generic libraries
+XObject     = imports.XObject.XObject;
 File        = imports.File.File; 
 console     = imports.console.console; 
-Introspect  = imports['JSDOC/Introspect.js'].Introspect; 
-Template    = imports['JSDOC/Template.js'].Template; 
+Template    = imports.JsTemplate.Template.Template; 
+
+// Introspecion specific..
+NameSpace   = imports.Introspect.NameSpace.NameSpace; 
+Link        = imports.Introspect.Link.Link; 
+
 
 
 var outputdir = Seed.argv[2];
@@ -32,7 +35,7 @@ if (!File.isDirectory(outputdir)) {
  
 // Which libraries to build.
 
-var ns_list = Introspect.namespaces();
+var ns_list = NameSpace.namespaces();
 if (typeof(Seed.argv[3]) == 'string') {
     console.log(Seed.argv.length);
     ns_list = Seed.argv[3].split(',');
@@ -45,16 +48,25 @@ ns_list = ns_list.sort();
 langs=[];
 File.list(__script_path__ + '/templates/').forEach(function(f) {
     if (!File.isDirectory(__script_path__ + '/templates/' + f)) {
-        continue;
+        return;
     }
     if (f == 'resources') {
-        continue;
+        return;
     }
     langs.push({
         name : f,
-        cls_template       : new Template(__script_path__ + '/templates/' + f + '/class.html'),
-        cls_ix_template    : new Template(__script_path__ + '/templates/' + f + '/class_ix.html'),
-        reference_template : new Template(__script_path__ + '/templates/' + f + '/references.html'),
+        cls_template       : new Template( {
+            templateFile : __script_path__ + '/templates/' + f + '/class.html',
+            Link : Link // links might be specific to languages..
+        }),
+        cls_ix_template    : new Template( {
+            templateFile : __script_path__ + '/templates/' + f + '/class_ix.html',
+            Link : Link // links might be specific to languages..
+        }),
+        reference_template : new Template({
+            templateFile : __script_path__ + '/templates/' + f + '/references.html',
+            Link : Link // links might be specific to languages..
+        }),
     });
 });
 
@@ -76,7 +88,7 @@ ns_list.forEach(function(ns_name)
     var idx = { name: ns_name}; 
     console.log("START:" + ns_name);
    
-    var ns = Introspect.ns(ns_name);
+    var ns = NameSpace.ns(ns_name);
     
     // gir goes in top level...
     if (File.exists(ns.gir_file)) {
@@ -84,9 +96,10 @@ ns_list.forEach(function(ns_name)
     }
     
     
-    ns['left_bar'] = cls_ix_template.process(ns);
+    
 
     langs.forEach(function(lang) {
+        ns['left_bar'] = lang.cls_ix_template.process(ns);
         // namespace template
         Gio.simple_write(outputdir + '/'+ lang.name+ '/' +ns_name +  '.html', lang.cls_template.process(ns));
         
@@ -109,9 +122,9 @@ ns_list.forEach(function(ns_name)
         idx[i]= ns_name == 'GLib' ? 1 : ns[i].length ;
         ns[i].forEach( function(n) {
             var odata = XObject.extend(
-                    Introspect.factory(actions[i], ns_name, n),
-                    { 'left_bar' :ns['left_bar'] }
-                );
+                NameSpace.factory(actions[i], ns_name, n),
+                { 'left_bar' :ns['left_bar'] }
+            );
             langs.forEach(function(lang) {
                 Gio.simple_write(outputdir +  '/'+ lang.name + '/' + ns_name + '.' + n + '.html', 
                     lang.cls_template.process(odata)
@@ -129,32 +142,43 @@ var html_file_path = '';
 var html = ''
 
 // output cross reference data..
-
-for (var i in Introspect.references) {
-    html_file_path = File.join(outputdir, i + '.html');
-  
-    if (i == 'undefined') {
-      console.log("Undefined name space - ignored");
-      continue;
-    }
-    if (!File.isFile(html_file_path)) {
-      console.log("No HTML file " + html_file_path + " to insert references into - ignored");
-      continue;
-    }
+langs.forEach(function(lang) {
     
-    refs = reference_template.process(Introspect.references[i]);
+    for (var i in NameSpace.references) {
+        
+        html_file_path = [ outputdir, lang.name, i + '.html'].join('/');
+      
+        if (i == 'undefined') {
+          console.log("Undefined name space - ignored");
+          continue;
+        }
+        
+        if (!File.isFile(html_file_path)) {
+          console.log("No HTML file " + html_file_path + " to insert references into - ignored");
+          continue;
+        }
+        
+        refs = langs.reference_template.process(NameSpace.references[i]);
 
-      // HTML to put refs into
-    html =  File.read(html_file_path);
+          // HTML to put refs into
+        html =  File.read(html_file_path);
 
-      // do the replacement
-    html = html.replace(/\<!--references--\>/, refs);
+          // do the replacement
+        html = html.replace(/\<!--references--\>/, refs);
 
-      // write back to file
-    Gio.simple_write(html_file_path, html);
+          // write back to file
+        Gio.simple_write(html_file_path, html);
 
-}
+    }
+});
 
-var ix_template = new Template(__script_path__ + '/templates/index.html');
-Gio.simple_write(outputdir + '/index.html', ix_template.process(ns_idx));
-File.silentRecursiveCopy(__script_path__ + '/templates/resources/', outputdir, Gio.FileCopyFlags.OVERWRITE);
+// set up index and resources.
+langs.forEach(function(lang) {
+    var ix_template = new Template({
+        templateFile : __script_path__ + '/templates/' + lang.name + '/index.html',
+        Link : Link, // lang specifc?
+    });
+    Gio.simple_write(outputdir + '/' + lang.name +  '/index.html', ix_template.process(ns_idx));
+    File.silentRecursiveCopy(__script_path__ + '/templates/resources/', 
+        outputdir + '/'  + lang.name , Gio.FileCopyFlags.OVERWRITE);
+});
\ No newline at end of file