X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=JSDOC%2FBuildDocs.js;h=dda68aaf6e468a16c09cd93f0dd20ae1992e1571;hb=e72b72e5c60e4a0fdbea786265abfa9c59de066d;hp=ca79c8a235e83090907a3152c082f4dbf3037eee;hpb=fcffa244c4bf2d1dd4cbaa66e0df6b5a370f7be4;p=gnome.introspection-doc-generator diff --git a/JSDOC/BuildDocs.js b/JSDOC/BuildDocs.js index ca79c8a..dda68aa 100644 --- a/JSDOC/BuildDocs.js +++ b/JSDOC/BuildDocs.js @@ -173,7 +173,9 @@ BuildDocs = { 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; @@ -183,10 +185,19 @@ BuildDocs = { templateFile : Options.templatesDir + "/class.tmpl", Link : Link }); - var classesTemplate = new Template( - templateFile : Options.templatesDir +"allclasses.tmpl", + 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; @@ -207,16 +218,17 @@ BuildDocs = { 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 srcDir = Options.target + "/symbols/src/"; + this.makeSrcFile(file, srcDir); } var classes = symbols.filter(isaClass).sort(makeSortby("alias")); 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]; @@ -228,7 +240,9 @@ BuildDocs = { 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) + } @@ -237,11 +251,7 @@ BuildDocs = { Link.base = ""; publish.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; @@ -270,7 +280,88 @@ BuildDocs = { 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(path, srcDir, name) { + if (Options.outputSource) return; + + return; // not done? + + if (!name) { + name = path.replace(/\.\.?[\\\/]/g, "").replace(/[\\\/]/g, "_"); + name = name.replace(/\:/g, "_"); + } + + var src = { + path: path, + name:name, + charset: IO.encoding, + hilited: "" + }; + + + if (src.hilited) { + IO.saveFile(srcDir, name+publish.conf.ext, src.hilited); + } + } };