- From: Robin Berjon via cvs-syncmail <cvsmail@w3.org>
- Date: Wed, 02 Dec 2009 17:42:15 +0000
- To: public-dap-commits@w3.org
Update of /sources/public/2009/dap/ReSpec.js/js In directory hutz:/tmp/cvs-serv13741/js Modified Files: respec.js Log Message: implemented nullable support, ISSUE-51 Index: respec.js =================================================================== RCS file: /sources/public/2009/dap/ReSpec.js/js/respec.js,v retrieving revision 1.55 retrieving revision 1.56 diff -u -d -r1.55 -r1.56 --- respec.js 2 Dec 2009 17:10:08 -0000 1.55 +++ respec.js 2 Dec 2009 17:42:13 -0000 1.56 @@ -917,7 +917,13 @@ if (match) { mem.type = "attribute"; mem.readonly = (match[1] == "readonly"); - mem.datatype = match[2]; + var type = match[2]; + mem.nullable = false; + if (/\?$/.test(type)) { + type = type.replace(/\?$/, ""); + mem.nullable = true; + } + mem.datatype = type; mem.id = match[3]; mem.raises = []; if (sgrs.length) { @@ -957,10 +963,16 @@ } // CONST - match = /^\s*const\s+\b([^=]+)\b\s+([^=\s]+)\s*=\s*(.*)$/.exec(str); + match = /^\s*const\s+\b([^=]+\??)\s+([^=\s]+)\s*=\s*(.*)$/.exec(str); if (match) { mem.type = "constant"; - mem.datatype = match[1]; + var type = match[1]; + mem.nullable = false; + if (/\?$/.test(type)) { + type = type.replace(/\?$/, ""); + mem.nullable = true; + } + mem.datatype = type; mem.id = match[2]; mem.value = match[3]; return mem; @@ -970,7 +982,13 @@ match = /^\s*\b(.*?)\s+\b(\S+)\s*\(\s*(.*)\s*\)\s*$/.exec(str); if (match) { mem.type = "method"; - mem.datatype = match[1]; + var type = match[1]; + mem.nullable = false; + if (/\?$/.test(type)) { + type = type.replace(/\?$/, ""); + mem.nullable = true; + } + mem.datatype = type; mem.id = match[2]; mem.params = []; var prm = match[3]; @@ -1016,7 +1034,13 @@ prm = this.parseExtendedAttributes(prm, p); var match = /^\s*\b(.+?)\s+([^\s]+)\s*$/.exec(prm); if (match) { - p.datatype = match[1]; + var type = match[1]; + p.nullable = false; + if (/\?$/.test(type)) { + type = type.replace(/\?$/, ""); + p.nullable = true; + } + p.datatype = type; p.id = match[2]; p.description = sn.documentFragment(); sn.copyChildren(dd, p.description); @@ -1037,7 +1061,13 @@ var match = re.exec(prm); if (match) { prm = prm.replace(re, ""); - p.datatype = match[1]; + var type = match[1]; + p.nullable = false; + if (/\?$/.test(type)) { + type = type.replace(/\?$/, ""); + p.nullable = true; + } + p.datatype = type; p.id = match[2]; mem.params.push(p); } @@ -1140,7 +1170,7 @@ if (it.params.length) { var table = sn.element("table", { "class": "parameters" }, desc); var tr = sn.element("tr", {}, table); - ["Parameter", "Type", "Description"].forEach(function (tit) { sn.element("th", {}, tr, tit); }); + ["Parameter", "Type", "Nullable", "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); @@ -1155,6 +1185,8 @@ else { sn.element("code", {}, tyTD, [sn.element("a", {}, null, prm.datatype)]); } + if (prm.nullable) sn.element("td", { "class": "prmNullTrue" }, tr, "\u2714"); + else sn.element("td", { "class": "prmNullFalse" }, tr, "\u2718"); var cnt = prm.description ? [prm.description] : ""; sn.element("td", { "class": "prmDesc" }, tr, cnt); } @@ -1199,6 +1231,7 @@ else { sn.element("code", {}, reDiv, [sn.element("a", {}, null, it.datatype)]); } + if (it.nullable) sn.text(", nullable", reDiv); } else if (type == "attribute") { sn.text(" of type ", dt); @@ -1214,6 +1247,7 @@ } if (it.readonly) sn.text(", readonly", dt); + if (it.nullable) sn.text(", nullable", dt); if (it.raises.length) { var table = sn.element("table", { "class": "exceptions" }, desc); @@ -1249,6 +1283,7 @@ else if (type == "constant") { sn.text(" of type ", dt); sn.element("span", { "class": "idlConstType" }, dt, [sn.element("a", {}, null, it.datatype)]); + if (it.nullable) sn.text(", nullable", dt); } } } @@ -1293,9 +1328,11 @@ // we process attributes and methods in place var maxAttr = 0, maxMeth = 0, maxConst = 0; obj.children.forEach(function (it, idx) { - if (it.type == "attribute") maxAttr = (it.datatype.length > maxAttr) ? it.datatype.length : maxAttr; - else if (it.type == "method") maxMeth = (it.datatype.length > maxMeth) ? it.datatype.length : maxMeth; - else if (it.type == "constant") maxConst = (it.datatype.length > maxConst) ? it.datatype.length : maxConst; + var len = it.datatype.length; + if (it.nullable) len = len + 1; + if (it.type == "attribute") maxAttr = (len > maxAttr) ? len : maxAttr; + else if (it.type == "method") maxMeth = (len > maxMeth) ? len : maxMeth; + else if (it.type == "constant") maxConst = (len > maxConst) ? len : maxConst; }); var curLnk = "widl-" + obj.id + "-"; for (var i = 0; i < obj.children.length; i++) { @@ -1344,7 +1381,9 @@ else str += " "; str += "attribute "; var pad = max - attr.datatype.length; - str += "<span class='idlAttrType'>" + this.writeDatatype(attr.datatype) + "</span> "; + if (attr.nullable) pad = pad - 1; + var nullable = attr.nullable ? "?" : ""; + str += "<span class='idlAttrType'>" + this.writeDatatype(attr.datatype) + nullable + "</span> "; for (var i = 0; i < pad; i++) str += " "; str += "<span class='idlAttrName'><a href='#" + curLnk + attr.id + "'>" + attr.id + "</a></span>"; if (gets.length) { @@ -1366,14 +1405,17 @@ if (meth.extendedAttributes) str += this._idn(indent) + "[<span class='extAttr'>" + meth.extendedAttributes + "</span>]\n"; str += this._idn(indent); var pad = max - meth.datatype.length; - str += "<span class='idlMethType'>" + this.writeDatatype(meth.datatype) + "</span> "; + if (meth.nullable) pad = pad - 1; + var nullable = meth.nullable ? "?" : ""; + str += "<span class='idlMethType'>" + this.writeDatatype(meth.datatype) + nullable + "</span> "; for (var i = 0; i < pad; i++) str += " "; str += "<span class='idlMethName'><a href='#" + curLnk + meth.id + "'>" + meth.id + "</a></span> ("; var obj = this; str += meth.params.map(function (it) { + var nullable = it.nullable ? "?" : ""; var prm = "<span class='idlParam'>"; if (it.extendedAttributes) prm += "[<span class='extAttr'>" + it.extendedAttributes + "</span>] "; - prm += "in <span class='idlParamType'>" + obj.writeDatatype(it.datatype) + "</span> " + + prm += "in <span class='idlParamType'>" + obj.writeDatatype(it.datatype) + nullable + "</span> " + "<span class='idlParamName'>" + it.id + "</span>" + "</span>"; @@ -1396,7 +1438,9 @@ str += this._idn(indent); str += "const "; var pad = max - cons.datatype.length; - str += "<span class='idlConstType'><a>" + cons.datatype + "</a></span> "; + if (cons.nullable) pad = pad - 1; + var nullable = cons.nullable ? "?" : ""; + str += "<span class='idlConstType'><a>" + cons.datatype + "</a>" + nullable + "</span> "; for (var i = 0; i < pad; i++) str += " "; str += "<span class='idlConstName'><a href='#" + curLnk + cons.id + "'>" + cons.id + "</a></span> = " + "<span class='idlConstValue'>" + cons.value + "</span>;</span>\n";
Received on Wednesday, 2 December 2009 17:42:20 UTC