2009/dap/ReSpec.js/js respec.js,1.164,1.165

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

Modified Files:
	respec.js 
Log Message:
add support for merging dictionaries with interface IDL via data-merge attribute on the interface <dl>

Index: respec.js
===================================================================
RCS file: /sources/public/2009/dap/ReSpec.js/js/respec.js,v
retrieving revision 1.164
retrieving revision 1.165
diff -u -d -r1.164 -r1.165
--- respec.js	13 Sep 2011 06:17:59 -0000	1.164
+++ respec.js	13 Sep 2011 10:05:31 -0000	1.165
@@ -1627,6 +1627,11 @@
             inf.partial = !!match[1];
             inf.id = match[2];
             inf.refId = this._id(inf.id);
+            if (idl.getAttribute('data-merge')) {
+                inf.merge = [];
+                var merge = idl.getAttribute('data-merge').split(' ');
+                for (var i = 0; i < merge.length; i++) inf.merge.push(merge[i]);
+            }
             if (match[3]) inf.superclasses = match[3].split(/\s*,\s*/);
         }
         else {
@@ -2153,7 +2158,10 @@
             }
             
             var sec = sn.element("section", {}, df);
-            sn.element("h2", {}, sec, "Dictionary Members");
+            cnt = [sn.text("Dictionary "),
+                   sn.element("a", { "class": "idlType" }, null, obj.id),
+                   sn.text(" Members")];
+            sn.element("h2", {}, sec, cnt);
             var dl = sn.element("dl", { "class": "dictionary-members" }, sec);
             for (var j = 0; j < things.length; j++) {
                 var it = things[j];
@@ -2335,6 +2343,18 @@
                     }
                 }
             }
+            if (typeof obj.merge !== "undefined" && obj.merge.length > 0) {
+                // hackish: delay the execution until the DOM has been initialized, then merge
+                setTimeout(function () {
+                    for (var i = 0; i < obj.merge.length; i++) {
+                        var idlInterface = document.querySelector("#idl-def-" + obj.refId),
+                            idlDictionary = document.querySelector("#idl-def-" + obj.merge[i]);
+                        idlDictionary.parentNode.parentNode.removeChild(idlDictionary.parentNode);
+                        idlInterface.appendChild(document.createElement("p"));
+                        idlInterface.appendChild(idlDictionary);
+                    }
+                }, 0);
+            }
             return df;
         }
     },

Received on Tuesday, 13 September 2011 10:05:36 UTC