JSDOC/TokenReader.js
[gnome.introspection-doc-generator] / JSDOC / SymbolSet.js
index 6e2c059..5843a94 100644 (file)
@@ -2,10 +2,12 @@
 
  
 XObject         = imports.XObject.XObject;
-Options         = imports.BuildDocs.Options;
-Parser          = imports.Parser.Parser;
-Symbol          = imports.Symbol.Symbol;
 DocComment      = imports.DocComment.DocComment;
+// circular references..
+///Options         = imports.BuildDocs.Options;
+//Parser          = imports.Parser.Parser;
+//Symbol          = imports.Symbol.Symbol;
+
 
 
 SymbolSet = XObject.define(
@@ -15,11 +17,15 @@ SymbolSet = XObject.define(
     Object,
     {
         
+        _index : false,
+        
+        
         init : function() {
             this._index = {};
         },
 
-        keys : function() {
+        keys : function() 
+        {
             var found = [];
             for (var p in this._index) {
                 found.push(p);
@@ -29,14 +35,16 @@ SymbolSet = XObject.define(
 
 
         hasSymbol : function(alias) {
-            return this.keys().indexOf(alias) > -1;
+            return typeof(this._index[alias]) != 'undefined';
+            //return this.keys().indexOf(alias) > -1;
         },
 
         addSymbol : function(symbol) {
-            print("ADDING SYMBOL:"+symbol.alias.toString());
+            //print("ADDING SYMBOL:"+symbol.alias.toString());
+            
             
             if (this.hasSymbol(symbol.alias)) {
-                Options.LOG.warn("Overwriting symbol documentation for: "+symbol.alias + ".");
+                imports.BuildDocs.Options.LOG.warn("Overwriting symbol documentation for: "+symbol.alias + ".");
             }
             this._index[symbol.alias] = symbol;
         },
@@ -54,6 +62,17 @@ SymbolSet = XObject.define(
             }
             return found;
         },
+        /**
+         * for serializing
+         */
+        toJSON : function() {
+            return {
+                '*object' : 'SymbolSet',
+                _index : this._index
+            };
+            
+        },
+
 
         deleteSymbol : function(alias) {
             if (!this.hasSymbol(alias)) return;
@@ -80,20 +99,23 @@ SymbolSet = XObject.define(
         resolveBorrows : function() {
             for (p in this._index) {
                 var symbol = this._index[p];
+                
+                
+                
                 if (symbol.is("FILE") || symbol.is("GLOBAL")) continue;
                 
                 var borrows = symbol.inherits;
                 for (var i = 0; i < borrows.length; i++) {
                     var borrowed = this.getSymbol(borrows[i].alias);
                     if (!borrowed) {
-                        Options.LOG.warn("Can't borrow undocumented "+borrows[i].alias+".");
+                        imports.BuildDocs.Options.LOG.warn("Can't borrow undocumented "+borrows[i].alias+".");
                         continue;
                     }
                     
                     var borrowAsName = borrows[i].as;
                     var borrowAsAlias = borrowAsName;
                     if (!borrowAsName) {
-                        Options.LOG.warn("Malformed @borrow, 'as' is required.");
+                        imports.BuildDocs.Options.LOG.warn("Malformed @borrow, 'as' is required.");
                         continue;
                     }
                     
@@ -186,13 +208,13 @@ SymbolSet = XObject.define(
                     var container = this.getSymbol(symbol.memberOf);
                     if (!container) {
                         if (SymbolSet.isBuiltin(symbol.memberOf)) {
-                            container = Parser.addBuiltin(symbol.memberOf);
+                            container = imports.Parser.Parser.addBuiltin(symbol.memberOf);
                         }
                         else {
                            // print("symbol NOT a BUILT IN - createing a container");
                             // Eg. Ext.y.z (missing y)
                             // we need to add in the missing symbol...
-                            container = new Symbol(symbol.memberOf, [], "OBJECT", new DocComment(""));
+                            container = new imports.Symbol.Symbol(symbol.memberOf, [], "OBJECT", new DocComment(""));
                             container.isNamespace = true;
                             this.addSymbol( container );
                            // print(container.toSource());
@@ -227,10 +249,10 @@ SymbolSet = XObject.define(
                     if (contributer) {
                         contributer.childClasses.push(symbol.alias);
                         symbol.inheritsFrom.push(contributer.alias);
-                        if (!isUnique(symbol.inheritsFrom)) {
-                            Options.LOG.warn("Can't resolve augments: Circular reference: "+symbol.alias+" inherits from "+contributer.alias+" more than once.");
-                        }
-                        else {
+                        //if (!isUnique(symbol.inheritsFrom)) {
+                        //    imports.BuildDocs.Options.LOG.warn("Can't resolve augments: Circular reference: "+symbol.alias+" inherits from "+contributer.alias+" more than once.");
+                        //}
+                        //else {
                             var cmethods = contributer.methods;
                             var cproperties = contributer.properties;
                             var cfgs = contributer.cfgs;
@@ -245,11 +267,11 @@ SymbolSet = XObject.define(
                             }
                             
                                 
-                        }
+                        //}
                     }
                     else {
                         
-                        Options.LOG.warn("Can't augment contributer: '"+augments[ii]+"', not found. FOR: " + symbol.alias);
+                        imports.BuildDocs.Options.LOG.warn("Can't augment contributer: '"+augments[ii]+"', not found. FOR: " + symbol.alias);
                         
                         //LOG.warn("We only have the following symbols: \n" + 
                           //      this.keys().toSource().split(",").join(",    \n"));
@@ -304,6 +326,7 @@ SymbolSet = XObject.define(
             //while(addAugments(symbol.augments) >  0) { }
             
         }
+         
 })
 
 SymbolSet.isBuiltin = function(name) {