2009/dap/ReSpec.js/js respec.js,1.56,1.57

Update of /sources/public/2009/dap/ReSpec.js/js
In directory hutz:/tmp/cvs-serv13467/js

Modified Files:
	respec.js 
Log Message:
support optional

Index: respec.js
===================================================================
RCS file: /sources/public/2009/dap/ReSpec.js/js/respec.js,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -d -r1.56 -r1.57
--- respec.js	2 Dec 2009 17:42:13 -0000	1.56
+++ respec.js	3 Dec 2009 11:43:17 -0000	1.57
@@ -14,9 +14,8 @@
 //  - WebIDL
 //      . make it so that extended attributes on members and attributes are only wrapped if needed
 //      . make processor aware of some extended attributes (e.g. Constructor)
-//      . support nullable
 //      . support variadic params
-//      . support optional params
+//      . support arrays
 //      . support special operations: getter, setter, creator, deleter, caller, omittable
 //      . support stringifiers
 //  - add support for a test variant of the specification, based on the ideas in P+C
@@ -1077,6 +1076,21 @@
                     }
                 }
             }
+            
+            // apply optional
+            var isOptional = false;
+            for (var i = 0; i < mem.params.length; i++) {
+                var p = mem.params[i];
+                var pkw = p.datatype.split(/\s+/);
+                var idx = pkw.indexOf("optional");
+                if (idx > -1) {
+                    isOptional = true;
+                    pkw.splice(idx, 1);
+                    p.datatype = pkw.join(" ");
+                }
+                p.optional = isOptional;
+            }
+            
             return mem;
         }
 
@@ -1170,7 +1184,7 @@
                         if (it.params.length) {
                             var table = sn.element("table", { "class": "parameters" }, desc);
                             var tr = sn.element("tr", {}, table);
-                            ["Parameter", "Type", "Nullable", "Description"].forEach(function (tit) { sn.element("th", {}, tr, tit); });
+                            ["Parameter", "Type", "Nullable", "Optional", "Description"].forEach(function (tit) { sn.element("th", {}, tr, tit); });
                             for (var k = 0; k < it.params.length; k++) {
                                 var prm = it.params[k];
                                 var tr = sn.element("tr", {}, table);
@@ -1187,6 +1201,8 @@
                                 }
                                 if (prm.nullable) sn.element("td", { "class": "prmNullTrue" }, tr, "\u2714");
                                 else              sn.element("td", { "class": "prmNullFalse" }, tr, "\u2718");
+                                if (prm.optional) sn.element("td", { "class": "prmOptTrue" }, tr, "\u2714");
+                                else              sn.element("td", { "class": "prmOptFalse" }, tr, "\u2718");
                                 var cnt = prm.description ? [prm.description] : "";
                                 sn.element("td", { "class": "prmDesc" }, tr, cnt);
                             }
@@ -1413,12 +1429,12 @@
         var obj = this;
         str += meth.params.map(function (it) {
                                     var nullable = it.nullable ? "?" : "";
+                                    var optional = it.optional ? " optional " : " ";
                                     var prm = "<span class='idlParam'>";
                                     if (it.extendedAttributes) prm += "[<span class='extAttr'>" + it.extendedAttributes + "</span>] ";
-                                    prm += "in <span class='idlParamType'>" + obj.writeDatatype(it.datatype) + nullable + "</span> " +
+                                    prm += "in" + optional + "<span class='idlParamType'>" + obj.writeDatatype(it.datatype) + nullable + "</span> " +
                                     "<span class='idlParamName'>" + it.id + "</span>" +
                                     "</span>";
-                                    
                                     return prm;
                                 })
                           .join(", ");

Received on Thursday, 3 December 2009 11:43:28 UTC