JSDOC/TokenReader.js
[gnome.introspection-doc-generator] / JSDOC / DocTag.js
index ce442d5..b7f25ca 100644 (file)
@@ -26,6 +26,7 @@ DocTag = XObject.define(
         this.isOptional   = false;
         this.defaultValue = "";
         this.desc         = "";
+        this.optvalues    = false;
         if (typeof src != "undefined") {
             this.parse(src);
         }
@@ -42,9 +43,37 @@ DocTag = XObject.define(
         /**
          * serialize..
          */
-        toObject :function(t)
+        toJSON :function(t)
         {
+            var ret = { '*object' : 'DocTag' };
             
+            for (var i in this) {
+                if (i == 'optvalues') { 
+                    ret[i] = this.optvalues;
+                    continue;
+                }
+                
+                switch (typeof(this[i])) {
+                    case 'function':
+                       continue;
+                       continue;
+                        
+                    case 'string':
+                    case 'number':
+                    case 'boolean':                    
+                        ret[i] = this[i]; continue;
+                        
+                        
+                        
+                    default:
+                        
+                        print("unknown type: (" + i + ")"  + typeof(this[i]));
+                        this.toJSON = null;
+                        print(JSON.stringify(this));;
+                        Seed.quit();
+                   }
+            }
+            return ret;
         },
         
 
@@ -73,6 +102,26 @@ DocTag = XObject.define(
                 if (Options.LOG) Options.LOG.warn(e);
                 else throw e;
             }
+            
+            // if type == @cfg, and matches (|....|...)
+            
+            src = src.trim();
+            if (this.title == "cfg" && src.match(/^\([^)]+\)/)) {
+                var m = src.match(/^\(([^)]+)\)/);
+                print(m);
+                if (m[1].match(/\|/)) {
+                    var opts = m[1].trim().split(/\s*\|\s*/);
+                    this.optvalues = opts;
+                    src = src.substring(m[0].length).trim();
+                    print(src);
+                    
+                    
+                }
+                
+                
+            }
+            
+            
             this.desc = src; // whatever is left
             
             // example tags need to have whitespace preserved