Author: andyhot
Date: Mon Nov 20 07:59:30 2006
New Revision: 477229

URL: http://svn.apache.org/viewvc?view=rev&rev=477229
Log:
doc on getElementAsString...other functions made 'private'

Modified:
    tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/html.js
    tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/test_html.js

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/html.js
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/html.js?view=diff&rev=477229&r1=477228&r2=477229
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/html.js 
(original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/html.js Mon Nov 
20 07:59:30 2006
@@ -3,8 +3,6 @@
 /**
  * package: tapestry.html
  * Provides functionality related to parsing and rendering dom nodes.
- *
- * TODO: Mark all functions (apart from getContentAsString) as 'private'.
  */
 tapestry.html={
        
@@ -15,49 +13,88 @@
          *
          * The resulting string does NOT contain any markup (or attributes) of
          * the given node - only child nodes are rendered and returned.
+         *
+         * Implementation Note: This function tries to make use of browser 
+         * specific features (the xml attribute of nodes in IE and the 
XMLSerializer
+         * object in Mozilla derivatives) - if those fails, a generic 
implementation
+         * is guaranteed to work in all platforms.
         * 
         * Parameters: 
         * 
         *      node - The dom node.
         * Returns:
         * 
-        * A string with the html content of the given node.
+        * The string representation of the given node's contents.
         */    
        getContentAsString:function(node){
                if (typeof node.xml != "undefined")
-                       return this.getContentAsStringIE(node);
+                       return this._getContentAsStringIE(node);
                else if (typeof XMLSerializer != "undefined" )
-                       return this.getContentAsStringMozilla(node);
+                       return this._getContentAsStringMozilla(node);
                else
-                       return this.getContentAsStringGeneric(node);
-       },
+                       return this._getContentAsStringGeneric(node);
+       },        
+       
+        /**
+        * Function: getElementAsString
+        * 
+        * Takes a dom node and returns itself and its contents rendered in a 
string.
+         *
+         * Implementation Note: This function uses a generic implementation in 
order
+         * to generate the returned string.
+        * 
+        * Parameters: 
+        * 
+        *      node - The dom node.
+        * Returns:
+        * 
+        * The string representation of the given node.
+        */         
+       getElementAsString:function(node){
+               if (!node) { return ""; }
+               
+               var s='<' + node.nodeName;
+               // add attributes
+               if (node.attributes && node.attributes.length > 0) {
+                       for (var i=0; i < node.attributes.length; i++) {
+                               s += " " + node.attributes[i].name + "=\"" + 
node.attributes[i].value + "\"";   
+                       }
+               }
+               // close start tag
+               s += '>';
+               // content of tag
+               s += this._getContentAsStringGeneric(node);
+               // end tag
+               s += '</' + node.nodeName + '>';
+               return s;
+       },        
 
-       getContentAsStringIE:function(node){
+       _getContentAsStringIE:function(node){
                var s="";
        for (var i = 0; i < node.childNodes.length; i++)
                s += node.childNodes[i].xml;
        return s;
        },
        
-       getContentAsStringMozilla:function(node){
+       _getContentAsStringMozilla:function(node){
                var xmlSerializer = new XMLSerializer();
            var s = "";
            for (var i = 0; i < node.childNodes.length; i++) {
                s += xmlSerializer.serializeToString(node.childNodes[i]);
                if (s == "undefined")
-                       return this.getContentAsStringGeneric(node);
+                       return this._getContentAsStringGeneric(node);
            }
            return s;
        },
        
-       getContentAsStringGeneric:function(node){
+       _getContentAsStringGeneric:function(node){
                var s="";
                if (node == null) { return s; }
                for (var i = 0; i < node.childNodes.length; i++) {
                        switch (node.childNodes[i].nodeType) {
                                case 1: // ELEMENT_NODE
                                case 5: // ENTITY_REFERENCE_NODE
-                                       s += 
this.getElementAsStringGeneric(node.childNodes[i]);
+                                       s += 
this.getElementAsString(node.childNodes[i]);
                                        break;
                                case 3: // TEXT_NODE
                                case 2: // ATTRIBUTE_NODE
@@ -69,24 +106,5 @@
                        }
                }
                return s;       
-       },
-       
-       getElementAsStringGeneric:function(node){
-               if (!node) { return ""; }
-               
-               var s='<' + node.nodeName;
-               // add attributes
-               if (node.attributes && node.attributes.length > 0) {
-                       for (var i=0; i < node.attributes.length; i++) {
-                               s += " " + node.attributes[i].name + "=\"" + 
node.attributes[i].value + "\"";   
-                       }
-               }
-               // close start tag
-               s += '>';
-               // content of tag
-               s += this.getContentAsStringGeneric(node);
-               // end tag
-               s += '</' + node.nodeName + '>';
-               return s;
        }
 }

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/test_html.js
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/test_html.js?view=diff&rev=477229&r1=477228&r2=477229
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/test_html.js 
(original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/tests/test_html.js Mon 
Nov 20 07:59:30 2006
@@ -6,16 +6,39 @@
 
 
 function test_html_getContentAsString(){
+    
+        var node = _createTestNode();
+        
+        var data = tapestry.html.getContentAsString(node).toLowerCase();
+        jum.assertEquals("<div id=\"testid2\">content</div>", data);
+}
+
+function test_html_textarea(){
+    
+        var node = _createTestNode("textarea", true);
+        
+        var data = tapestry.html.getContentAsString(node).toLowerCase();
+        jum.assertEquals("<textarea id=\"testid2\"></textarea>", data);
+        // cannot test Mozilla's getContentAsString from here... 
+        // only browser based tests will show if this is working
+}
+
+function _createTestNode(element, empty){
        var node = document.createElement("div");
        node.setAttribute("id", "testid");
         
-       var node2 = document.createElement("div");
+        if (!element)
+            element="div";
+        
+       var node2 = document.createElement(element);
        node2.setAttribute("id", "testid2");
-        var content = document.createTextNode("content");
-        node2.appendChild(content);
+        
+        if (!empty){
+            var content = document.createTextNode("content");
+            node2.appendChild(content);
+        }
         
         node.appendChild(node2);
         
-        var data = tapestry.html.getContentAsString(node).toLowerCase();
-        jum.assertEquals("<div id=\"testid2\">content</div>", data);
+        return node;
 }


Reply via email to