Hacky fix-up hook for patching return types generated by respec.js v1
authorSangwhan Moon <sangwhan@iki.fi>
Mon, 25 Mar 2013 18:13:02 +0900
branchv1
changeset 194 bb8c57f3af32
parent 193 6f2c52cd50f6
child 200 504e8b9d4fa0
Hacky fix-up hook for patching return types generated by respec.js
touchevents.html
--- a/touchevents.html	Wed Mar 20 15:32:00 2013 -0400
+++ b/touchevents.html	Mon Mar 25 18:13:02 2013 +0900
@@ -82,6 +82,38 @@
           wgPatentURI:  "http://www.w3.org/2004/01/pp-impl/45559/status",
       };
     </script>
+    <script type="text/javascript" id="fixuphook">
+    (function () {
+        // Hacky fix-up hook to patch up return types generated by respec.js, as special
+        // operations like the ones in specialOps are not officially supported.
+        var specialOps = ['getter ', 'setter ', 'creator ', 'deleter ', 'caller ', 'omittable '];
+        var fixUpCaller = window.setInterval(function() {
+            
+            // Check if respec.js is done.
+            var respecJS = document.querySelectorAll(".remove");
+            if (respecJS.length > 0) return;
+            
+            else
+            {
+                // Performance-wise, this is a stupid idea. For long specs it's probably
+                // going to take a *extremely* long time to finish. You have been warned.
+                var tags = document.getElementsByTagName('a');
+            
+                for (var i = 0; i < tags.length; i++)
+                    for (var j = 0; j < specialOps.length; j++)
+                        if (tags[i].textContent.indexOf(specialOps[j]) === 0 &&
+                            tags[i].parentNode.previousSibling.textContent.indexOf('Return type:') !== -1)
+                            tags[i].textContent = tags[i].textContent.substring(specialOps[j].length - 1);
+                
+                // Clean-up script element and interval caller
+                var fixUpEl = document.getElementById('fixuphook');
+                fixUpEl.parentNode.removeChild(fixUpEl);
+                
+                window.clearInterval(fixUpCaller);
+            }
+        }, 100);
+    })();
+    </script>
 
     <style type="text/css">
       .event {