X-Git-Url: http://git.roojs.org/?p=gnome.introspection-doc-generator;a=blobdiff_plain;f=docs.js;h=236104255993247e3c30452c969f114354691754;hp=43cdc371669a714393d61d963ffbfe52155f17ee;hb=bd23da659f79148fd4befb53701cdfc0d8766cc0;hpb=109b8349b9418a05e20e50ecede10bd80386b062 diff --git a/docs.js b/docs.js index 43cdc37..2361042 100644 --- a/docs.js +++ b/docs.js @@ -4,65 +4,56 @@ Gtk = imports.gi.Gtk; Gio = imports.gi.Gio; Gdk = imports.gi.Gdk; -imports['Array.js']; -JSDOC = imports['JSDOC.js'].JSDOC; -console = imports['console.js'].console; -Roo = imports['Roo.js'].Roo; +imports['Object.js'].load(Object); -Introspect = imports['JSDOC/Introspect.js'].Introspect; +File = imports['File.js'].File; +JSDOC = imports['JSDOC.js'].JSDOC; +console = imports['console.js'].console; +Introspect = imports['JSDOC/Introspect.js'].Introspect; - +var outputdir = Seed.argv[2]; + +if (!outputdir) { + throw { + name: "ArgumentError", + message: "No output directory specified on the command line\n" + + "Usage seed docs.js /var/www/seed [Gtk] \n" + }; +} -//var outputdir = '/home2/www/devel/seed'; -var outputdir = '/var/www/seed'; +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 ns_list = JSDOC.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_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 cls_ix_template = new JSDOC.Template(__script_path__ + '/docs/class_ix.html'); 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; - } - - //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. - - - - // Namespace file.. + +ns_list.map(function(ns_name) +{ + var core = imports.gi[ns_name]; + + console.log("START:" + ns_name); + 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)); + Gio.simple_write(outputdir + '/'+ ns_name + '.html', cls_template.process(ns)); + cls_list.push({ alias : ns_name }); @@ -70,67 +61,66 @@ Roo.each(ns_list, function(ns_name) { // 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) { + ns.objects.map( function(n) { + Gio.simple_write(outputdir + '/'+ ns_name + '.' + n + '.html', + cls_template.process( + Object.extend( + Introspect.factory(actions[i], ns_name, n), + { 'left_bar' :ns['left_bar'] } + ) + ) + ) + + console.log(ns_name + '.' +n); + }); + } -}) + +}); + +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]); + + // HTML to put refs into + html = File.read(html_file_path); + + // do the replacement + html = html.replace(/\