X-Git-Url: http://git.roojs.org/?p=gnome.introspection-doc-generator;a=blobdiff_plain;f=JSDOC%2FBuildDocs.js;h=fac451dccc6c60443b1ee5720135e44a0bbc285b;hp=6e5edf55a9ab8e9520cdbd5bc7a7b60be912c40c;hb=7e0c58e6c06915dad40a04b582612b60175c4fee;hpb=4fa68a7ff5486e7c59d112737992cd5343f916a7 diff --git a/JSDOC/BuildDocs.js b/JSDOC/BuildDocs.js index 6e5edf5..fac451d 100644 --- a/JSDOC/BuildDocs.js +++ b/JSDOC/BuildDocs.js @@ -10,7 +10,7 @@ File = imports.File.File; Template = imports.JsTemplate.Template.Template; -Options = imports.Options.Options; + Parser = imports.Parser.Parser; TokenReader = imports.TokenReader.TokenReader; @@ -21,7 +21,7 @@ Symbol = imports.Symbol.Symbol; // should not realy be here -- or anywhere...?? - +Options = false; // refer to this everywhere! BuildDocs = { @@ -31,20 +31,16 @@ BuildDocs = { srcFiles : [], + build : function (opts) { - - XObject.extend(Options, opts); - + Options = opts; Options.init(); - - - Options.LOG.inform("JsDoc Toolkit main() running at "+new Date()+"."); - Options.LOG.inform("With options: "); + //Options.LOG.inform("With options: "); - if (!File.isDirectory(Options.cacheDirectory)) { + if (Options.cacheDirectory.length && !File.isDirectory(Options.cacheDirectory)) { File.mkdir(Options.cacheDirectory) } @@ -151,7 +147,7 @@ BuildDocs = { Parser.finish(); - } + }, @@ -164,93 +160,109 @@ BuildDocs = { if (!File.exists(Options.target)) File.mkdir(Options.target); - if (!File.exists(Options.target+"symbols")) - File.mkdir(Options.target+"symbols"); - if (!File.exists(Options.target+"symbols/src")) - File.mkdir(Options.target+"symbols/src"); + if (!File.exists(Options.target+"/symbols")) + File.mkdir(Options.target+"/symbols"); + if (!File.exists(Options.target+"/symbols/src")) + File.mkdir(Options.target+"/symbols/src"); // copy everything in 'static' into File.list(Options.templatesDir + '/static').forEach(function (f) { File.copy(Options.templatesDir + '/static/' + f, Options.target + '/' + f); }); - + if (!File.isDirectory(Options.target +"/json")) { + File.makeDir(Options.target +"/json"); + } // used to check the details of things being linked to Link.symbolSet = symbolSet; - + Link.base = "../"; var classTemplate = new Template({ - templateFile : publish.conf.templatesDir+"class.tmpl", + templateFile : Options.templatesDir + "/class.tmpl", Link : Link - }); - var classesTemplate = new Template(publish.conf.templatesDir+"allclasses.tmpl"); - //} - //atch(e) { - // print(e.message); - /// quit(); - //} - - // filters + }); + var classesTemplate = new Template({ + templateFile : Options.templatesDir +"/allclasses.tmpl", + Link : Link + }); + var classesindexTemplate = new Template({ + templateFile : Options.templatesDir +"/index.tmpl", + Link : Link + }); + var fileindexTemplate = new Template({ + templateFile : Options.templatesDir +"/allfiles.tmpl", + Link: Link + }); + classTemplate.symbolSet = symbolSet; - function hasNoParent($) {return ($.memberOf == "")} - function isaFile($) {return ($.is("FILE"))} - function isaClass($) { return ($.is("CONSTRUCTOR") || $.isNamespace); } + function hasNoParent($) { + return ($.memberOf == "") + } + function isaFile($) { + return ($.is("FILE")) + } + function isaClass($) { + return ($.is("CONSTRUCTOR") || $.isNamespace); + } var symbols = symbolSet.toArray(); - var files = JSDOC.opt.srcFiles; + var files = Options.srcFiles; + for (var i = 0, l = files.length; i < l; i++) { var file = files[i]; - var srcDir = publish.conf.outDir + "symbols/src/"; - makeSrcFile(file, srcDir); + var targetDir = Options.target + "/symbols/src/"; + this.makeSrcFile(file, targetDir); } var classes = symbols.filter(isaClass).sort(makeSortby("alias")); + + var classesIndex = classesTemplate.process(classes); // kept in memory - Link.base = "../"; - publish.classesIndex = classesTemplate.process(classes); // kept in memory - IO.makeDir(publish.conf.outDir+"json"); for (var i = 0, l = classes.length; i < l; i++) { var symbol = classes[i]; var output = ""; - output = classTemplate.process(symbol); - println("write " + publish.conf.outDir+"symbols/" +symbol.alias+publish.conf.ext); - IO.saveFile(publish.conf.outDir+"symbols/", symbol.alias+publish.conf.ext, output); + File.write(Options.target+"/symbols/" +symbol.alias+'.' + Options.publishExt , + classTemplate.process(symbol)); + + print("write " + Options.target+"/symbols/" +symbol.alias+'.' + Options.publishExt); + // dump out a - IO.saveFile(publish.conf.outDir+"json/", symbol.alias+'.json' , publish.jsonRender(symbol)); + + this.publishJSON(Options.target+"/json/", symbol.alias+'.json', symbol) + } // regenrate the index with different relative links Link.base = ""; - publish.classesIndex = classesTemplate.process(classes); + var classesIndex = classesTemplate.process(classes); - try { - var classesindexTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"index.tmpl"); - } - catch(e) { print(e.message); quit(); } + - var classesIndex = classesindexTemplate.process(classes); - IO.saveFile(publish.conf.outDir, "index"+publish.conf.ext, classesIndex); - classesindexTemplate = classesIndex = classes = null; + File.write(Options.target + "/index."+ Options.publishExt, + classesindexTemplate.process(classes) + ); - try { - var fileindexTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"allfiles.tmpl"); - } - catch(e) { print(e.message); quit(); } + // blank everything???? classesindexTemplate = classesIndex = classes = null; + + + + var documentedFiles = symbols.filter(function ($) { + return ($.is("FILE")) + }); - var documentedFiles = symbols.filter(isaFile); var allFiles = []; for (var i = 0; i < files.length; i++) { - allFiles.push(new JSDOC.Symbol(files[i], [], "FILE", new JSDOC.DocComment("/** */"))); + allFiles.push(new Symbol(files[i], [], "FILE", new JSDOC.DocComment("/** */"))); } for (var i = 0; i < documentedFiles.length; i++) { @@ -259,13 +271,90 @@ BuildDocs = { } allFiles = allFiles.sort(makeSortby("name")); + File.write(Options.target , "/files."+Options.publishExt, + fileindexTemplate.process(allFiles) + ); + + }, - var filesIndex = fileindexTemplate.process(allFiles); - IO.saveFile(publish.conf.outDir, "files"+publish.conf.ext, filesIndex); - fileindexTemplate = filesIndex = files = null; - } + publishJSON : function(file, data) + { + // what we need to output to be usefull... + // a) props.. + var cfgProperties = []; + if (!data.comment.getTag('singleton').length) { + cfgProperties = data.configToArray(); + cfgProperties = cfgProperties.sort(makeSortby("name")); + + } + var props = []; + //println(cfgProperties.toSource()); + var p =''; + for(var i =0; i < cfgProperties.length;i++) { + p = cfgProperties[i]; + props.push( { + name : p.name, + type : p.type, + desc : p.desc, + memberOf : p.memberOf == data.alias ? '' : p.memberOf + }); + } + + + var ownEvents = data.methods.filter( function(e){ + return e.isEvent && !e.comment.getTag('hide').length; + }).sort(makeSortby("name")); + + + var events = []; + var m; + for(var i =0; i < ownEvents.length;i++) { + m = ownEvents[i]; + events.push( { + name : m.name.substring(1), + sig : makeFuncSkel(m.params), + type : 'function', + desc : m.desc + }); + } + //println(props.toSource()); + // we need to output: + //classname => { + // propname => + // type=> + // desc=> + // } - + var ret = { + props : props, + events: events + }; + File.write(file, JSON.stringify(ret, null, 2 )); + + + // b) methods + // c) events + + + }, + makeSrcFile: function(sourceFile) + { + + + name = sourceFile.substring(Options.baseDir.length); + name = name.replace(/\.\.?[\\\/]/g, "").replace(/[\\\/]/g, "_"); + name = name.replace(/\:/g, "_"); //?? + + + var pretty = imports.PrettyPrint.toPretty(File.read(sourceFile)); + File.write(Options.target+"/symbols/src/" + name, + '' + + '' + sourceFile + '' + + '' + + '' + + pretty + + ''); + } };