X-Git-Url: http://git.roojs.org/?p=gnome.introspection-doc-generator;a=blobdiff_plain;f=docs.js;h=a34e3efa3a3f9de1ab036488ef8fc171971db27e;hp=236104255993247e3c30452c969f114354691754;hb=0127ea43e5a50a87da1ca3dae645223a3cf618d8;hpb=bd23da659f79148fd4befb53701cdfc0d8766cc0 diff --git a/docs.js b/docs.js index 2361042..a34e3ef 100644 --- a/docs.js +++ b/docs.js @@ -4,12 +4,17 @@ Gtk = imports.gi.Gtk; Gio = imports.gi.Gio; Gdk = imports.gi.Gdk; -imports['Object.js'].load(Object); +// generic libraries +XObject = imports.XObject.XObject; +File = imports.File.File; +console = imports.console.console; +Template = imports.JsTemplate.Template.Template; + +// Introspecion specific.. +NameSpace = imports.Introspect.NameSpace.NameSpace; +Link = imports.Introspect.Link.Link; + -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]; @@ -21,45 +26,87 @@ if (!outputdir) { }; } + if (!File.isDirectory(outputdir)) { console.log("Creating directory " + outputdir); File.mkdir(outputdir); }; -// list namespace.. -//var ns_list = [ 'GIRepository' ]; - - + +// Which libraries to build. -var ns_list = JSDOC.Introspect.namespaces(); +var ns_list = NameSpace.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.html'); -var reference_template = new JSDOC.Template(__script_path__ + '/docs/references.html'); - -ns_list.map(function(ns_name) + +ns_list = ns_list.sort(); + + +// which languages do we want to output for. +langs=[]; +File.list(__script_path__ + '/templates/').forEach(function(f) { + if (!File.isDirectory(__script_path__ + '/templates/' + f)) { + return; + } + if (f == 'resources') { + return; + } + langs.push({ + name : f, + 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.. + }), + }); +}); + + +/* +var cls_template = new Template(__script_path__ + '/templates/class.html'); +var cls_ix_template = new Template(__script_path__ + '/templates/class_ix.html'); +var reference_template = new Template(__script_path__ + '/templates/references.html'); +*/ + + +var ns_idx = []; +ns_list.forEach(function(ns_name) { + + //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); - ns['left_bar'] = cls_ix_template.process(ns); - - Gio.simple_write(outputdir + '/'+ ns_name + '.html', cls_template.process(ns)); + var ns = NameSpace.ns(ns_name); + + // gir goes in top level... + if (File.exists(ns.gir_file)) { + File.copyFile(ns.gir_file, outputdir + '/'+ ns.gir_filename, Gio.FileCopyFlags.OVERWRITE); + } - cls_list.push({ - alias : ns_name - }); - // left bar index of elements in namespace... - Gio.simple_write(outputdir + '/_ix_'+ ns_name + '.shtml', 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)); + + // left bar index of elements in namespace... + Gio.simple_write(outputdir + '/'+ lang.name + '/_ix_'+ ns_name + '.shtml', lang.cls_ix_template.process(ns)); + + }); var actions = { @@ -71,56 +118,67 @@ ns_list.map(function(ns_name) }; 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'] } - ) + // we flag GLib as a GObject lib... + idx[i]= ns_name == 'GLib' ? 1 : ns[i].length ; + ns[i].forEach( function(n) { + var odata = XObject.extend( + 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) ) - ) - + }); 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; - } +// output cross reference data.. +langs.forEach(function(lang) { - refs = reference_template.process(Introspect.references[i]); - - // HTML to put refs into - html = File.read(html_file_path); - - // do the replacement - html = html.replace(/\