- From: Robin Berjon via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 13 Apr 2010 11:15:11 +0000
- To: public-dap-commits@w3.org
Update of /sources/public/2009/dap/ReSpec.js/js In directory hutz:/tmp/cvs-serv7477/js Modified Files: respec.js Log Message: fixing the handling of exception fields Index: respec.js =================================================================== RCS file: /sources/public/2009/dap/ReSpec.js/js/respec.js,v retrieving revision 1.106 retrieving revision 1.107 diff -u -d -r1.106 -r1.107 --- respec.js 13 Apr 2010 10:51:51 -0000 1.106 +++ respec.js 13 Apr 2010 11:15:09 -0000 1.107 @@ -1220,12 +1220,72 @@ for (var i = 0; i < dts.length; i++) { var dt = dts[i]; var dd = dt.nextElementSibling; // we take a simple road - var mem = this.interfaceMember(dt, dd); + var mem; + if (obj.type == "exception") { + mem = this.exceptionMember(dt, dd); + } + else { + mem = this.interfaceMember(dt, dd); + } obj.children.push(mem); } this.parent = exParent; }, + parseConst: function (mem, str) { + // CONST + var match = /^\s*const\s+\b([^=]+\??)\s+([^=\s]+)\s*=\s*(.*)$/.exec(str); + if (match) { + mem.type = "constant"; + var type = match[1]; + mem.nullable = false; + if (/\?$/.test(type)) { + type = type.replace(/\?$/, ""); + mem.nullable = true; + } + mem.datatype = type; + mem.id = match[2]; + mem.refId = this._id(mem.id); + mem.value = match[3]; + return true; + } + return false; + }, + + exceptionMember: function (dt, dd) { + var mem = { children: [] }; + var str = this._norm(dt.textContent); + mem.description = sn.documentFragment(); + sn.copyChildren(dd, mem.description); + str = this.parseExtendedAttributes(str, mem); + + if (this.parseConst(mem, str)) return mem; + + // FIELD + var match = /^\s*(.*?)\s+(\S+)\s*$/.exec(str); + if (match) { + mem.type = "field"; + var type = match[1]; + mem.nullable = false; + if (/\?$/.test(type)) { + type = type.replace(/\?$/, ""); + mem.nullable = true; + } + mem.array = false; + if (/\[\]$/.test(type)) { + type = type.replace(/\[\]$/, ""); + mem.array = true; + } + mem.datatype = type; + mem.id = match[2]; + mem.refId = this._id(mem.id); + return mem; + } + + // NOTHING MATCHED + error("Expected interface member, got: " + str); + }, + interfaceMember: function (dt, dd) { var mem = { children: [] }; var str = this._norm(dt.textContent); @@ -1299,22 +1359,7 @@ return mem; } - // CONST - match = /^\s*const\s+\b([^=]+\??)\s+([^=\s]+)\s*=\s*(.*)$/.exec(str); - if (match) { - mem.type = "constant"; - var type = match[1]; - mem.nullable = false; - if (/\?$/.test(type)) { - type = type.replace(/\?$/, ""); - mem.nullable = true; - } - mem.datatype = type; - mem.id = match[2]; - mem.refId = this._id(mem.id); - mem.value = match[3]; - return mem; - } + if (this.parseConst(mem, str)) return mem; // METHOD match = /^\s*\b(.*?)\s+\b(\S+)\s*\(\s*(.*)\s*\)\s*$/.exec(str); @@ -1513,7 +1558,59 @@ } return sn.element("div", { "class": "idlImplementsDesc" }, null, cnt); } - else if (obj.type == "interface" || obj.type == "exception") { + + else if (obj.type == "exception") { + var df = sn.documentFragment(); + var curLnk = "widl-" + obj.refId + "-"; + var types = ["field", "constant"]; + for (var i = 0; i < types.length; i++) { + var type = types[i]; + var things = obj.children.filter(function (it) { return it.type == type }); + if (things.length == 0) continue; + if (!this.noIDLSorting) { + things.sort(function (a, b) { + if (a.id < b.id) return -1; + if (a.id > b.id) return 1; + return 0; + }); + } + + var sec = sn.element("section", {}, df); + var secTitle = type; + secTitle = secTitle.substr(0, 1).toUpperCase() + secTitle.substr(1) + "s"; + sn.element("h2", {}, sec, secTitle); + var dl = sn.element("dl", { "class": type + "s" }, sec); + for (var j = 0; j < things.length; j++) { + var it = things[j]; + var dt = sn.element("dt", { id: curLnk + it.refId }, dl); + sn.element("code", {}, dt, it.id); + var desc = sn.element("dd", {}, dl, [it.description]); + if (type == "field") { + sn.text(" of type ", dt); + if (it.array) sn.text("array of ", dt); + var span = sn.element("span", { "class": "idlFieldType" }, dt); + var matched = /^sequence<(.+)>$/.exec(it.datatype); + if (matched) { + sn.text("sequence<", span); + sn.element("a", {}, span, matched[1]); + sn.text(">", span); + } + else { + sn.element("a", {}, span, it.datatype); + } + if (it.nullable) sn.text(", nullable", dt); + } + 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); + } + } + } + return df; + } + + else if (obj.type == "interface") { var df = sn.documentFragment(); var curLnk = "widl-" + obj.refId + "-"; var types = ["attribute", "method", "constant"];
Received on Tuesday, 13 April 2010 11:15:12 UTC