From 8b39ed9954fd4763ca4d0d4cac5cb0159295b0ec Mon Sep 17 00:00:00 2001 From: Anssi Kostiainen Date: Wed, 23 Jan 2013 13:40:40 +0200 Subject: [PATCH] Add support for 'noLegacyStyle' config flag: if set, removes legacy DOM-style sections following WebIDL blocks. Make WebIDL merge (set via data-merge attribute, a whitespace delimited list) insert interfaces before the target interface and separate the interfaces with a blank line in line with modern authoring practices. --- js/core/webidl-oldschool.js | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/js/core/webidl-oldschool.js b/js/core/webidl-oldschool.js index 0aa70d176a..96bdb6eadf 100644 --- a/js/core/webidl-oldschool.js +++ b/js/core/webidl-oldschool.js @@ -619,7 +619,8 @@ define( var $pre = $("
").attr(attr);
                 $pre.html(this.writeAsWebIDL(this.parent, -1));
                 $df.append($pre);
-                $df.append(this.writeAsHTML(this.parent));
+                if (!this.conf.noLegacyStyle) $df.append(this.writeAsHTML(this.parent));
+                this.mergeWebIDL(this.parent.children[0]);
                 return $df.children();
             },
 
@@ -1025,18 +1026,6 @@ define(
 			    var desc = sn.element("p", {}, div, [it.description]);
 			}
 		    }
-		    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("br"));
-                                idlInterface.appendChild(idlDictionary);
-                            }
-                        }, 0);
-                    }
                     return df;
                 }
             },
@@ -1052,6 +1041,21 @@ define(
                 return sanitiseID(id);
             },
 
+            mergeWebIDL:    function (obj) {
+                if (typeof obj.merge === "undefined" || obj.merge.length === 0) return;
+                // queue for later execution
+                setTimeout(function () {
+                    for (var i = 0; i < obj.merge.length; i++) {
+                        var idlInterface = document.querySelector("#idl-def-" + obj.refId)
+                        ,   idlInterfaceToMerge = document.querySelector("#idl-def-" + obj.merge[i]);
+                        idlInterface.insertBefore(document.createElement("br"), idlInterface.firstChild);
+                        idlInterface.insertBefore(document.createElement("br"), idlInterface.firstChild);
+                        idlInterfaceToMerge.parentNode.parentNode.removeChild(idlInterfaceToMerge.parentNode);
+                        idlInterface.insertBefore(idlInterfaceToMerge, idlInterface.firstChild);
+                    }
+                }, 0);
+            },
+
             writeAsWebIDL:    function (obj, indent) {
                 indent++;
                 var opt = { indent: indent, obj: obj, proc: this };