Template = imports.JsTemplate.Template.Template;
Link = imports.JsTemplate.Link.Link; // ?? fixme!??
-Parser = imports.Parser.Parser;
-TextStream = imports.TextStream.TextStream;
+Parser = imports.Parser.Parser;
+TextStream = imports.TextStream.TextStream;
TokenReader = imports.TokenReader.TokenReader;
TokenStream = imports.TokenStream.TokenStream;
-Symbol = imports.Symbol.Symbol;
+Symbol = imports.Symbol.Symbol;
+DocComment = imports.DocComment.DocComment;
+
/****************** INCLUDES ARE ALL AT THE BOTTOM OF THIS FILE!!!!! *******************/
// should not realy be here -- or anywhere...??
+function makeSortby(attribute) {
+ return function(a, b) {
+ if (a[attribute] != undefined && b[attribute] != undefined) {
+ a = a[attribute]; //.toLowerCase();
+ b = b[attribute];//.toLowerCase();
+ if (a < b) return -1;
+ if (a > b) return 1;
+ return 0;
+ }
+ }
+}
Options = false; // refer to this everywhere!
var txs = new TextStream(src);
- var tr = new TokenReader({ keepComments : true, keepWhite : true });
+ var tr = new TokenReader({ keepComments : true, keepWhite : true , sepIdents: false });
var ts = new TokenStream(tr.tokenize(txs));
return ($.is("CONSTRUCTOR") || $.isNamespace);
}
+
+
+
+
+
+
+
+
+
var symbols = this.symbolSet.toArray();
var files = Options.srcFiles;
var classes = symbols.filter(isaClass).sort(makeSortby("alias"));
- var classesIndex = classesTemplate.process(classes); // kept in memory
-
+ //Options.LOG.inform("classTemplate Process : all classes");
+
+ // var classesIndex = classesTemplate.process(classes); // kept in memory
+ Options.LOG.inform("iterate classes");
for (var i = 0, l = classes.length; i < l; i++) {
var symbol = classes[i];
var output = "";
+ Options.LOG.inform("classTemplate Process : " + symbol.alias);
+
File.write(Options.target+"/symbols/" +symbol.alias+'.' + Options.publishExt ,
classTemplate.process(symbol));
- print("write " + Options.target+"/symbols/" +symbol.alias+'.' + Options.publishExt);
+
// dump out a
- this.publishJSON(Options.target+"/json/", symbol.alias+'.json', symbol)
+ this.publishJSON(Options.target+"/json/" + symbol.alias+'.json', symbol)
// regenrate the index with different relative links
Link.base = "";
- var classesIndex = classesTemplate.process(classes);
+ //var classesIndex = classesTemplate.process(classes);
-
+ Options.LOG.inform("build index");
File.write(Options.target + "/index."+ Options.publishExt,
classesindexTemplate.process(classes)
var allFiles = [];
for (var i = 0; i < files.length; i++) {
- allFiles.push(new Symbol(files[i], [], "FILE", new JSDOC.DocComment("/** */")));
+ allFiles.push(new Symbol(files[i], [], "FILE", new DocComment("/** */")));
}
for (var i = 0; i < documentedFiles.length; i++) {
}
allFiles = allFiles.sort(makeSortby("name"));
- File.write(Options.target , "/files."+Options.publishExt,
+ Options.LOG.inform("write files index");
+
+ File.write(Options.target + "/files."+Options.publishExt,
fileindexTemplate.process(allFiles)
);
},
-
+ /**
+ * JSON files are lookup files for the documentation
+ * - can be used by IDE's or AJAX based doc tools
+ *
+ *
+ */
publishJSON : function(file, data)
{
// what we need to output to be usefull...
m = ownEvents[i];
events.push( {
name : m.name.substring(1),
- sig : makeFuncSkel(m.params),
+ sig : this.makeFuncSkel(m.params),
type : 'function',
desc : m.desc
});
},
makeSrcFile: function(sourceFile)
{
+ // this stuff works...
+ return;
- name = sourceFile.substring(Options.baseDir.length);
+ name = sourceFile.substring(Options.baseDir.length+1);
name = name.replace(/\.\.?[\\\/]/g, "").replace(/[\\\/]/g, "_");
+
name = name.replace(/\:/g, "_"); //??
- Options.LOG.inform("Write Source file :" + sourceFile);
+ Options.LOG.inform("Write Source file : " + Options.target+"/symbols/src/" + name);
var pretty = imports.PrettyPrint.toPretty(File.read(sourceFile));
File.write(Options.target+"/symbols/src/" + name,
'<html><head>' +
'</head><body class="highlightpage">' +
pretty +
'</body></html>');
+ },
+ /**
+ * used by JSON output to generate a function skeleton
+ */
+ makeFuncSkel :function(params) {
+ if (!params) return "function ()\n{\n\n}";
+ return "function (" +
+ params.filter(
+ function($) {
+ return $.name.indexOf(".") == -1; // don't show config params in signature
+ }
+ ).map( function($) { return $.name == 'this' ? '_self' : $.name; } ).join(", ") +
+ ")\n{\n\n}";
}
-
+
+
};