- From: Robin Berjon via cvs-syncmail <cvsmail@w3.org>
- Date: Thu, 03 Dec 2009 12:21:54 +0000
- To: public-dap-commits@w3.org
Update of /sources/public/2009/dap/ReSpec.js/js
In directory hutz:/tmp/cvs-serv19897/js
Modified Files:
respec.js
Log Message:
support for IDL arrays
Index: respec.js
===================================================================
RCS file: /sources/public/2009/dap/ReSpec.js/js/respec.js,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -d -r1.58 -r1.59
--- respec.js 3 Dec 2009 11:56:08 -0000 1.58
+++ respec.js 3 Dec 2009 12:21:52 -0000 1.59
@@ -861,6 +861,11 @@
type = type.replace(/\?$/, "");
tdf.nullable = true;
}
+ tdf.array = false;
+ if (/\[\]$/.test(type)) {
+ type = type.replace(/\[\]$/, "");
+ tdf.array = true;
+ }
tdf.datatype = type;
tdf.id = match[2];
tdf.description = sn.documentFragment();
@@ -928,6 +933,11 @@
type = type.replace(/\?$/, "");
mem.nullable = true;
}
+ mem.array = false;
+ if (/\[\]$/.test(type)) {
+ type = type.replace(/\[\]$/, "");
+ mem.array = true;
+ }
mem.datatype = type;
mem.id = match[3];
mem.raises = [];
@@ -993,6 +1003,11 @@
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.params = [];
@@ -1045,6 +1060,11 @@
type = type.replace(/\?$/, "");
p.nullable = true;
}
+ p.array = false;
+ if (/\[\]$/.test(type)) {
+ type = type.replace(/\[\]$/, "");
+ p.array = true;
+ }
p.datatype = type;
p.id = match[2];
p.description = sn.documentFragment();
@@ -1072,6 +1092,11 @@
type = type.replace(/\?$/, "");
p.nullable = true;
}
+ p.array = false;
+ if (/\[\]$/.test(type)) {
+ type = type.replace(/\[\]$/, "");
+ p.array = true;
+ }
p.datatype = type;
p.id = match[2];
mem.params.push(p);
@@ -1140,6 +1165,7 @@
cnt = [ sn.text("Throughout this specification, the identifier "),
sn.element("span", { "class": "idlTypedefID" }, null, obj.id),
sn.text(" is used to refer to the "),
+ sn.text(obj.array ? "array of " : ""),
tdt,
sn.text(obj.nullable ? " (nullable)" : ""),
sn.text(" type.")];
@@ -1204,7 +1230,9 @@
sn.text(">")]);
}
else {
- sn.element("code", {}, tyTD, [sn.element("a", {}, null, prm.datatype)]);
+ var cnt = [sn.element("a", {}, null, prm.datatype)];
+ if (prm.array) cnt.push(sn.text("[]"));
+ sn.element("code", {}, tyTD, cnt);
}
if (prm.nullable) sn.element("td", { "class": "prmNullTrue" }, tr, "\u2714");
else sn.element("td", { "class": "prmNullFalse" }, tr, "\u2718");
@@ -1252,12 +1280,15 @@
sn.text(">")]);
}
else {
- sn.element("code", {}, reDiv, [sn.element("a", {}, null, it.datatype)]);
+ var cnt = [sn.element("a", {}, null, it.datatype)];
+ if (it.array) cnt.push(sn.text("[]"));
+ sn.element("code", {}, reDiv, cnt);
}
if (it.nullable) sn.text(", nullable", reDiv);
}
else if (type == "attribute") {
sn.text(" of type ", dt);
+ if (it.array) sn.text("array of ", dt);
var span = sn.element("span", { "class": "idlAttrType" }, dt);
var matched = /^sequence<(.+)>$/.exec(it.datatype);
if (matched) {
@@ -1268,7 +1299,6 @@
else {
sn.element("a", {}, span, it.datatype);
}
-
if (it.readonly) sn.text(", readonly", dt);
if (it.nullable) sn.text(", nullable", dt);
@@ -1332,9 +1362,10 @@
}
else if (obj.type == "typedef") {
var nullable = obj.nullable ? "?" : "";
+ var arr = obj.array ? "[]" : "";
return "<span class='idlTypedef' id='idl-def-" + obj.id + "'>typedef <span class='idlTypedefType'>" +
this.writeDatatype(obj.datatype) +
- "</span>" + nullable + " <span class='idlTypedefID'>" + obj.id + "</span>;</span>";
+ "</span>" + arr + nullable + " <span class='idlTypedefID'>" + obj.id + "</span>;</span>";
}
else if (obj.type == "implements") {
return "<span class='idlImplements'><a>" + obj.id + "</a> implements <a>" + obj.datatype + "</a>;";
@@ -1350,18 +1381,20 @@
.join(", ");
str += " {\n";
// we process attributes and methods in place
- var maxAttr = 0, maxMeth = 0, maxConst = 0;
+ var maxAttr = 0, maxMeth = 0, maxConst = 0, hasRO = false;
obj.children.forEach(function (it, idx) {
var len = it.datatype.length;
if (it.nullable) len = len + 1;
+ if (it.array) len = len + 2;
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;
+ if (it.type == "attribute" && it.readonly) hasRO = true;
});
var curLnk = "widl-" + obj.id + "-";
for (var i = 0; i < obj.children.length; i++) {
var ch = obj.children[i];
- if (ch.type == "attribute") str += this.writeAttribute(ch, maxAttr, indent + 1, curLnk);
+ if (ch.type == "attribute") str += this.writeAttribute(ch, maxAttr, indent + 1, curLnk, hasRO);
else if (ch.type == "method") str += this.writeMethod(ch, maxMeth, indent + 1, curLnk);
else if (ch.type == "constant") str += this.writeConst(ch, maxConst, indent + 1, curLnk);
}
@@ -1372,15 +1405,19 @@
var str = "<span class='idlException' id='idl-def-" + obj.id + "'>";
if (obj.extendedAttributes) str += this._idn(indent) + "[<span class='extAttr'>" + obj.extendedAttributes + "</span>]\n";
str += this._idn(indent) + "exception <span class='idlExceptionID'>" + obj.id + "</span> {\n";
- var maxAttr = 0, maxConst = 0;
+ var maxAttr = 0, maxConst = 0, hasRO = false;
obj.children.forEach(function (it, idx) {
- if (it.type == "attribute") maxAttr = (it.datatype.length > maxAttr) ? it.datatype.length : maxAttr;
- 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.array) len = len + 2;
+ if (it.type == "attribute") maxAttr = (len > maxAttr) ? len : maxAttr;
+ else if (it.type == "constant") maxConst = (len > maxConst) ? len : maxConst;
+ if (it.type == "attribute" && it.readonly) hasRO = true;
});
var curLnk = "widl-" + obj.id + "-";
for (var i = 0; i < obj.children.length; i++) {
var ch = obj.children[i];
- if (ch.type == "attribute") str += this.writeAttribute(ch, maxAttr, indent + 1, curLnk);
+ if (ch.type == "attribute") str += this.writeAttribute(ch, maxAttr, indent + 1, curLnk, hasRO);
else if (ch.type == "constant") str += this.writeConst(ch, maxConst, indent + 1, curLnk);
}
str += this._idn(indent) + "};</span>\n";
@@ -1388,7 +1425,7 @@
}
},
- writeAttribute: function (attr, max, indent, curLnk) {
+ writeAttribute: function (attr, max, indent, curLnk, hasRO) {
var sets = [], gets = [];
if (attr.raises.length) {
for (var i = 0; i < attr.raises.length; i++) {
@@ -1401,13 +1438,17 @@
var str = "<span class='idlAttribute'>";
if (attr.extendedAttributes) str += this._idn(indent) + "[<span class='extAttr'>" + attr.extendedAttributes + "</span>]\n";
str += this._idn(indent);
- if (attr.readonly) str += "readonly ";
- else str += " ";
+ if (hasRO) {
+ if (attr.readonly) str += "readonly ";
+ else str += " ";
+ }
str += "attribute ";
var pad = max - attr.datatype.length;
if (attr.nullable) pad = pad - 1;
+ if (attr.array) pad = pad - 2;
var nullable = attr.nullable ? "?" : "";
- str += "<span class='idlAttrType'>" + this.writeDatatype(attr.datatype) + nullable + "</span> ";
+ var arr = attr.array ? "[]" : "";
+ str += "<span class='idlAttrType'>" + this.writeDatatype(attr.datatype) + arr + 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) {
@@ -1430,17 +1471,20 @@
str += this._idn(indent);
var pad = max - meth.datatype.length;
if (meth.nullable) pad = pad - 1;
+ if (meth.array) pad = pad - 2;
var nullable = meth.nullable ? "?" : "";
- str += "<span class='idlMethType'>" + this.writeDatatype(meth.datatype) + nullable + "</span> ";
+ var arr = meth.array ? "[]" : "";
+ str += "<span class='idlMethType'>" + this.writeDatatype(meth.datatype) + arr + 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 optional = it.optional ? " optional " : " ";
+ var arr = it.array ? "[]" : "";
var prm = "<span class='idlParam'>";
if (it.extendedAttributes) prm += "[<span class='extAttr'>" + it.extendedAttributes + "</span>] ";
- prm += "in" + optional + "<span class='idlParamType'>" + obj.writeDatatype(it.datatype) + nullable + "</span> " +
+ prm += "in" + optional + "<span class='idlParamType'>" + obj.writeDatatype(it.datatype) + arr + nullable + "</span> " +
"<span class='idlParamName'>" + it.id + "</span>" +
"</span>";
return prm;
Received on Thursday, 3 December 2009 12:21:56 UTC