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) {
},
-
+ /**
+ * create a list of files in this.srcFiles using list of directories / files in Options.src
+ *
+ */
_getSrcFiles : function()
{
for (var i = 0; i < Options.src.length; i++) {
// add to sourcefiles..
-
+ if (!File.isDirectory(Options.src[i])) {
+ _this.srcFiles.push(Options.src[i]);
+ continue;
+ }
File.list(Options.src[i] ).forEach(function($) {
if (Options['exclude-src'].indexOf($) > -1) {
return;
//Seed.print(JSON.stringify(this.srcFiles, null,4));Seed.quit();
return this.srcFiles;
},
+ /**
+ * Parse the source files.
+ *
+ */
_parseSrcFiles : function()
{
var srcFile = this.srcFiles[i];
- var cacheFile = Options.cacheDirectory + srcFile.replace(/\//g, '_') + ".cache";
+ var cacheFile = !Options.cacheDirectory.length ? false :
+ Options.cacheDirectory + srcFile.replace(/\//g, '_') + ".cache";
- //println(cacheFile);
+ //print(cacheFile);
// disabled at present!@!!
- if (false && !Options.disablecache && File.exists(cacheFile)) {
+ if (cacheFile && File.exists(cacheFile)) {
// check filetime?
- var c_mt = File.getTimes(cacheFile);
- var o_mt = File.getTimes(srcFile);
+ var c_mt = File.mtime(cacheFile);
+ var o_mt = File.mtime(srcFile);
//println(c_mt.toSource());
// println(o_mt.toSource());
// this check does not appear to work according to the doc's - need to check it out.
- if (c_mt[0] > o_mt[0]) { // cached time > original time!
+ if (c_mt > o_mt) { // cached time > original time!
// use the cached mtimes..
- var syms = JSON.parse(File.read(cacheFile));
-
- throw "Conversion of cache not done yet!";
-
- for (var sy in syms) {
- //println("ADD:" + sy );
- Parser.symbols.addSymbol(syms[sy]);
+ print("Read " + cacheFile);
+ var syms = JSON.parse(File.read(cacheFile), function(k, v) {
+ //print(k);
+ if (typeof(v) != 'object') {
+ return v;
+ }
+ if (typeof(v['*object']) == 'undefined') {
+ return v;
+ }
+ var cls = imports[v['*object']][v['*object']];
+ //print(v['*object']);
+ delete v['*object'];
+ var ret = new cls();
+ XObject.extend(ret, v);
+ return ret;
+
+
+ });
+ //print("Add sybmols " + cacheFile);
+ for (var sy in syms._index) {
+ // print("ADD:" + sy );
+ Parser.symbols.addSymbol(syms._index[sy]);
}
continue;
}
var ts = new TokenStream(tr.tokenize(txs));
Parser.parse(ts, srcFile);
-
+
+ if (cacheFile) {
+ File.write(cacheFile,
+ JSON.stringify(
+ Parser.symbolsToObject(srcFile),
+ null,2
+ )
+ );
+
+ }
//var outstr = JSON.stringify(
// Parser.filesSymbols[srcFile]._index
//);
Link.symbolSet = this.symbolSet;
Link.base = "../";
+ Link.srcFileFlatName = this.srcFileFlatName;
+ Link.srcFileRelName = this.srcFileRelName;
+
var classTemplate = new Template({
templateFile : Options.templateDir + "/class.html",
Link : Link
function isaFile($) {
return ($.is("FILE"))
}
- function isaClass($) {
- return ($.is("CONSTRUCTOR") || $.isNamespace);
+ function isaClass($) {
+ return ($.is("CONSTRUCTOR") || $.isNamespace || $.isClass);
}
var targetDir = Options.target + "/symbols/src/";
this.makeSrcFile(file, targetDir);
}
+ //print(JSON.stringify(symbols,null,4));
var classes = symbols.filter(isaClass).sort(makeSortby("alias"));
Options.LOG.inform("iterate classes");
+ var jsonAll = {};
+
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));
- // dump out a
+ File.write(Options.target+"/symbols/" +symbol.alias+'.' + Options.publishExt ,
+ classTemplate.process(symbol));
- this.publishJSON(Options.target+"/json/" + symbol.alias+'.json', symbol)
+ jsonAll[symbol.alias] = this.publishJSON(symbol);
}
+ File.write(Options.target+"/json/roodata.json",
+ JSON.stringify({
+ success : true,
+ data : jsonAll
+ }, null, 1)
+ );
+
+
// regenrate the index with different relative links
Link.base = "";
//var classesIndex = classesTemplate.process(classes);
fileindexTemplate.process(allFiles)
);
+
+
+
},
/**
* JSON files are lookup files for the documentation
*
*
*/
- publishJSON : function(file, data)
+ publishJSON : function(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"));
+ cfgProperties = cfgProperties.sort(makeSortby("alias"));
}
var props = [];
var p ='';
for(var i =0; i < cfgProperties.length;i++) {
p = cfgProperties[i];
- props.push( {
+ var add = {
name : p.name,
type : p.type,
desc : p.desc,
+
memberOf : p.memberOf == data.alias ? '' : p.memberOf
- });
+ }
+ if (p.optvalues) {
+ add.optvals = p.optvalues;
+ }
+ props.push(add );
}
desc : m.desc
});
}
+
+ var ownMethods = data.methods.filter( function(e){
+ return !e.isEvent && !e.comment.getTag('hide').length;
+ }).sort(makeSortby("name"));
+
+
+ var methods = [];
+
+ for(var i =0; i < ownMethods.length;i++) {
+ m = ownMethods[i];
+ methods.push( {
+ name : m.name,
+ sig : this.makeMethodSkel(m.params),
+ type : 'function',
+ desc : m.desc
+ });
+ }
+
//println(props.toSource());
// we need to output:
//classname => {
var ret = {
props : props,
- events: events
+ events: events,
+ methods : methods,
};
- File.write(file, JSON.stringify(ret, null, 2 ));
+ return ret;
+
// b) methods
},
+ srcFileRelName : function(sourceFile)
+ {
+ return sourceFile.substring(Options.baseDir.length+1);
+ },
+ srcFileFlatName: function(sourceFile)
+ {
+ var name = this.srcFileRelName(sourceFile);
+ name = name.replace(/\.\.?[\\\/]/g, "").replace(/[\\\/]/g, "_");
+ return name.replace(/\:/g, "_") + '.html'; //??;
+
+ },
+
makeSrcFile: function(sourceFile)
{
// this stuff works...
- //print(sourceFile);
- var name = sourceFile; //.substring(Options.baseDir.length+1);
- //print(name);
- name = name.replace(/\.\.?[\\\/]/g, "").replace(/[\\\/]/g, "_");
-
- name = name.replace(/\:/g, "_"); //??
+ var name = this.srcFileFlatName(sourceFile);
Options.LOG.inform("Write Source file : " + Options.target+"/symbols/src/" + name);
- var pretty = imports.PrettyPrint.toPretty(File.read(sourceFile));
+ var pretty = imports.PrettyPrint.toPretty(File.read( sourceFile));
File.write(Options.target+"/symbols/src/" + name,
'<html><head>' +
'<title>' + sourceFile + '</title>' +
- '<link rel="stylesheet" type="text/css" href="../../../highlight-js.css"/>' +
+ '<link rel="stylesheet" type="text/css" href="../../../css/highlight-js.css"/>' +
'</head><body class="highlightpage">' +
pretty +
'</body></html>');
}
).map( function($) { return $.name == 'this' ? '_self' : $.name; } ).join(", ") +
")\n{\n\n}";
+ },
+ makeMethodSkel :function(params) {
+ if (!params) return "()";
+ return "(" +
+ params.filter(
+ function($) {
+ return $.name.indexOf(".") == -1; // don't show config params in signature
+ }
+ ).map( function($) { return $.type + " " +( $.name == 'this' ? '_self' : $.name ); } ).join(", ") +
+ ")";
}
-
};