Gtk = imports.gi.Gtk;
Gio = imports.gi.Gio;
Gdk = imports.gi.Gdk;
+XObject = imports.XObject.XObject;
-imports['Array.js'];
-JSDOC = imports['JSDOC.js'].JSDOC;
-console = imports['console.js'].console;
-Roo = imports['Roo.js'].Roo;
-Introspect = imports['JSDOC/Introspect.js'].Introspect;
-
+File = imports.File.File;
+console = imports.console.console;
+Introspect = imports['JSDOC/Introspect.js'].Introspect;
+Template = imports['JSDOC/Template.js'].Template;
+
+
+var outputdir = Seed.argv[2];
-//var outputdir = '/home2/www/devel/seed';
-var outputdir = '/var/www/seed';
+if (!outputdir) {
+ throw {
+ name: "ArgumentError",
+ message: "No output directory specified on the command line\n" +
+ "Usage seed docs.js /var/www/seed [Gtk] \n"
+ };
+}
+
+if (!File.isDirectory(outputdir)) {
+ console.log("Creating directory " + outputdir);
+ File.mkdir(outputdir);
+};
// list namespace..
//var ns_list = [ 'GIRepository' ];
-var ns_list = JSDOC.Introspect.namespaces().sort();
-//console.dump(ns_list);
- // ns_list = [ 'Gio' ];
-//ns_list = [ 'Gtk' ];
- /* 'Gdk',
- 'Gtk',
- 'GLib',
- 'Gio',
- 'GObject',
- 'GIRepository',
- 'Gst',
- 'Pango']
-*/
-var cls_list = [];
-
-var cls_template = new JSDOC.Template(__script_path__ + '/docs/class.html');
-var cls_ix_template = new JSDOC.Template(__script_path__ + '/docs/class_ix.tmpl');
-var reference_template = new JSDOC.Template(__script_path__ + '/docs/references.html');
-
-Roo.each(ns_list, function(ns_name) {
- var core;
- //if (ns_name == 'Epiphany') {
- // return;
- //}
- if (ns_name == 'GnomeGamesSupport') { // on gnome dev cd stuff.
- return;
- }
+
+
+var ns_list = Introspect.namespaces();
+if (typeof(Seed.argv[3]) == 'string') {
+ console.log(Seed.argv.length);
+ ns_list = Seed.argv[3].split(',');
+}
+
+ns_list = ns_list.sort();
+
+var cls_template = new Template(__script_path__ + '/docs/class.html');
+var cls_ix_template = new Template(__script_path__ + '/docs/class_ix.html');
+var reference_template = new Template(__script_path__ + '/docs/references.html');
+var ns_idx = [];
+ns_list.forEach(function(ns_name)
+{
- //try {
- core = imports.gi[ns_name];
- //} catch (e) {
- // Seed.print("SKIP (no import): "+ ns_name + ": " + e);
-
- // return;
- //}
- Seed.print("START:" + ns_name);
- // ones that cause problems.
+ //if (ns_idx.length) { return ;/* do one - for testing */ }
+ var core = imports.gi[ns_name];
+ var idx = { name: ns_name};
+ console.log("START:" + ns_name);
+
+ var ns = Introspect.ns(ns_name);
+
+ if (File.exists(ns.gir_file)) {
+ File.copyFile(ns.gir_file, outputdir + '/'+ ns.gir_filename, Gio.FileCopyFlags.OVERWRITE);
+ }
- // Namespace file..
- var ns = Introspect.ns(ns_name);
+ ns['left_bar'] = cls_ix_template.process(ns);
- Gio.simple_write(outputdir + '/'+ ns_name + '.shtml', cls_template.process(ns));
- cls_list.push({
- alias : ns_name
- });
+ Gio.simple_write(outputdir + '/'+ ns_name + '.html', cls_template.process(ns));
// left bar index of elements in namespace...
Gio.simple_write(outputdir + '/_ix_'+ ns_name + '.shtml', cls_ix_template.process(ns));
- // index...
-
-
- Roo.each(ns.objects, function(n) {
-
-
- Gio.simple_write(outputdir + '/'+ ns_name + '.' + n + '.shtml',
- cls_template.process( Introspect.factory('Class', ns_name, n)));
-
- Seed.print(ns_name + '.' +n);
- });
- Roo.each(ns.interfaces, function(n) {
-
-
- Gio.simple_write(outputdir + '/'+ ns_name + '.' + n + '.shtml',
- cls_template.process( Introspect.factory('Interface', ns_name, n)));
-
- Seed.print(ns_name + '.' +n);
- });
- Roo.each(ns.structs, function(n) {
-
-
- Gio.simple_write(outputdir + '/'+ ns_name + '.' + n + '.shtml',
- cls_template.process( Introspect.factory('Struct', ns_name, n)));
-
-
- Seed.print(ns_name + '.' +n);
- });
- Roo.each(ns.unions, function(n) {
-
-
- Gio.simple_write(outputdir + '/'+ ns_name + '.' + n + '.shtml',
- cls_template.process( Introspect.factory('Union', ns_name, n)));
-
-
- Seed.print(ns_name + '.' +n);
- });
-
- Roo.each(ns.enums, function(n) {
-
-
- Gio.simple_write(outputdir + '/'+ ns_name + '.' + n + '.shtml',
- cls_template.process( Introspect.factory('Enum', ns_name, n)));
-
-
- Seed.print(ns_name + '.' +n);
- });
+ var actions = {
+ 'objects' : 'Class',
+ 'interfaces' : 'Interface',
+ 'structs' : 'Struct',
+ 'unions' : 'Union',
+ 'enums' : 'Enum'
+
+ };
+ for (var i in actions) {
+ // we flag GLib as a GObject lib...
+ idx[i]= ns_name == 'GLib' ? 1 : ns[i].length ;
+ ns[i].forEach( function(n) {
+ Gio.simple_write(outputdir + '/'+ ns_name + '.' + n + '.html',
+ cls_template.process(
+ XObject.extend(
+ Introspect.factory(actions[i], ns_name, n),
+ { 'left_bar' :ns['left_bar'] }
+ )
+ )
+ )
+
+ console.log(ns_name + '.' +n);
+ });
+ }
+ ns_idx.push(idx);
-})
+});
+
+var refs = '';
+var html_file_path = '';
+var html = ''
+
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;
+ }
- console.log("REFERENCE: " + i + ' : ' + Introspect.references[i].length);
- Gio.simple_write(outputdir + '/references.'+ i + '.html',
- reference_template.process( Introspect.references[i] ));
-
-}
+ refs = reference_template.process(Introspect.references[i]);
-var ix_template = new JSDOC.Template(__script_path__ + '/docs/index.tmpl');
-Gio.simple_write(outputdir + '/index.shtml', ix_template.process(ns_list));
+ // HTML to put refs into
+ html = File.read(html_file_path);
+ // do the replacement
+ html = html.replace(/\<!--references--\>/, refs);
+ // write back to file
+ Gio.simple_write(html_file_path, html);
+
+}
+var ix_template = new Template(__script_path__ + '/docs/index.html');
+Gio.simple_write(outputdir + '/index.html', ix_template.process(ns_idx));
+File.silentRecursiveCopy(__script_path__ + '/docs/resources/', outputdir, Gio.FileCopyFlags.OVERWRITE);