JSDOC/TokenReader.js
[gnome.introspection-doc-generator] / JSDOC / DocTag.js
index 2e5ccad..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,11 +43,16 @@ DocTag = XObject.define(
         /**
          * serialize..
          */
-        toObject :function(t)
+        toJSON :function(t)
         {
-            var ret = { _object : 'DocTag' };
+            var ret = { '*object' : 'DocTag' };
             
             for (var i in this) {
+                if (i == 'optvalues') { 
+                    ret[i] = this.optvalues;
+                    continue;
+                }
+                
                 switch (typeof(this[i])) {
                     case 'function':
                        continue;
@@ -56,8 +62,14 @@ DocTag = XObject.define(
                     case 'number':
                     case 'boolean':                    
                         ret[i] = this[i]; continue;
+                        
+                        
+                        
                     default:
-                        print("unknown type:" + typeof(this[i]));
+                        
+                        print("unknown type: (" + i + ")"  + typeof(this[i]));
+                        this.toJSON = null;
+                        print(JSON.stringify(this));;
                         Seed.quit();
                    }
             }
@@ -90,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