// this currently uses the concept of publish.js...
-
+ this.publish();
+ publish : function() {
+
+
+
+ publish.conf = { // trailing slash expected for dirs
+ ext: ".html",
+
+ templatesDir: JSDOC.opt.t + "/",
+ symbolsDir: "symbols/",
+ srcDir: "symbols/src/"
+ };
+
+ publish.conf.outDir = (JSDOC.opt.d.length > 0 ? JSDOC.opt.d : "/tmp/jsdoc/");
+
+
+
+
+ if (JSDOC.opt.s && defined(Link) && Link.prototype._makeSrcLink) {
+ Link.prototype._makeSrcLink = function(srcFilePath) {
+ return "<"+srcFilePath+">";
+ }
+ }
+
+ println(publish.conf.outDir);
+
+ if (!File.exists(publish.conf.outDir))
+ File.mkdir(publish.conf.outDir);
+ if (!File.exists(publish.conf.outDir+"symbols"))
+ File.mkdir(publish.conf.outDir+"symbols");
+ if (!File.exists(publish.conf.outDir+"symbols/src"))
+ File.mkdir(publish.conf.outDir+"symbols/src");
+
+ IO.copyFile (publish.conf.templatesDir+"static/default.css", publish.conf.outDir, "default.css");
+ IO.copyFile (publish.conf.templatesDir+"static/doc.js", publish.conf.outDir, "doc.js");
+ IO.copyFile (publish.conf.templatesDir+"static/page.js", publish.conf.outDir, "page.js");
+
+
+ //IO.mkPath((publish.conf.outDir+"symbols/src").split("/"));
+
+ // used to check the details of things being linked to
+ Link.symbolSet = symbolSet;
+
+ //try {
+ var classTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"class.tmpl");
+ var classesTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"allclasses.tmpl");
+ //}
+ //atch(e) {
+ // print(e.message);
+ /// quit();
+ //}
+
+ // filters
+
+ classTemplate.symbolSet = symbolSet;
+
+
+ function hasNoParent($) {return ($.memberOf == "")}
+ function isaFile($) {return ($.is("FILE"))}
+ function isaClass($) { return ($.is("CONSTRUCTOR") || $.isNamespace); }
+
+ var symbols = symbolSet.toArray();
+
+ var files = JSDOC.opt.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 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];
+ 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);
+ // dump out a
+ IO.saveFile(publish.conf.outDir+"json/", symbol.alias+'.json' , publish.jsonRender(symbol));
+
+
+ }
+
+ // regenrate the index with different relative links
+ 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;
+
+ try {
+ var fileindexTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"allfiles.tmpl");
+ }
+ catch(e) { print(e.message); quit(); }
+
+ 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("/** */")));
+ }
+
+ for (var i = 0; i < documentedFiles.length; i++) {
+ var offset = files.indexOf(documentedFiles[i].alias);
+ allFiles[offset] = documentedFiles[i];
+ }
+
+ allFiles = allFiles.sort(makeSortby("name"));
+
+ var filesIndex = fileindexTemplate.process(allFiles);
+ IO.saveFile(publish.conf.outDir, "files"+publish.conf.ext, filesIndex);
+ fileindexTemplate = filesIndex = files = null;
+ }
+