2009/dap/ReSpec.js/js respec.js,1.90,1.91

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

Modified Files:
	respec.js 
Log Message:
Added support for data-transform attribute.
Fixed pre.example handling so it uses innerHTML instead of TextContent.

Index: respec.js
===================================================================
RCS file: /sources/public/2009/dap/ReSpec.js/js/respec.js,v
retrieving revision 1.90
retrieving revision 1.91
diff -u -d -r1.90 -r1.91
--- respec.js	22 Feb 2010 23:15:36 -0000	1.90
+++ respec.js	24 Feb 2010 15:45:37 -0000	1.91
@@ -161,6 +161,10 @@
             }
             this.makeTemplate();
 
+            // This is done REALLY early in case the transform ends up
+            // needing to include something
+            this.doTransforms() ;
+
             // This is done early so that if other data gets embedded it will be 
             // processed
             this.includeFiles();
@@ -330,6 +334,29 @@
         this._insertCSS(css, false);
     },
 
+    doTransforms: function() {
+        var divs = document.querySelectorAll("[data-transform]");
+        for (var i = 0; i < divs.length; i++) {
+            var div = divs[i];
+            var content = div.innerHTML ;
+            var flist = div.getAttribute('data-transform');
+            if (flist) {
+                var methods = flist.split(/\s+/) ;
+                for (var j = 0; j < methods.length; j++) {
+                    var call = 'content = ' + methods[j] + '(this,content)' ;
+                    try {
+                        eval(call) ;
+                    } catch (e) {
+                        warning('call to ' + call + ' failed with ' + e) ;
+                    }
+                }
+            }
+            if (content) {
+                div.innerHTML = content ;
+            }
+        }
+    },
+
     includeFiles: function() {
         var divs = document.querySelectorAll("[data-include]");
         for (var i = 0; i < divs.length; i++) {
@@ -578,7 +605,7 @@
         var exes = document.querySelectorAll("pre.example");
         for (var i = 0; i < exes.length; i++) {
             var ex = exes[i];
-            var lines = ex.textContent.split("\n");
+            var lines = ex.innerHTML.split("\n");
             while (lines.length && /^\s*$/.test(lines[0])) lines.shift();
             while (/^\s*$/.test(lines[lines.length - 1])) lines.pop();
             var matches = /^(\s+)/.exec(lines[0]);
@@ -588,7 +615,7 @@
                     lines[j] = lines[j].replace(rep, "");
                 }
             }
-            ex.textContent = lines.join("\n");
+            ex.innerHTML = lines.join("\n");
         }
         // highlight
         sh_highlightDocument(this.base + "js/lang/", ".min.js");

Received on Wednesday, 24 February 2010 15:45:41 UTC