Author: toad
Date: 2007-05-03 22:17:55 +0000 (Thu, 03 May 2007)
New Revision: 13140

Modified:
   trunk/freenet/src/freenet/support/HTMLEncoder.java
   trunk/freenet/src/freenet/support/HTMLNode.java
Log:
Hopefully a significant optimisation to page generation

Modified: trunk/freenet/src/freenet/support/HTMLEncoder.java
===================================================================
--- trunk/freenet/src/freenet/support/HTMLEncoder.java  2007-05-03 22:16:01 UTC 
(rev 13139)
+++ trunk/freenet/src/freenet/support/HTMLEncoder.java  2007-05-03 22:17:55 UTC 
(rev 13140)
@@ -18,6 +18,15 @@
        public static String encode(String s) {
                int n = s.length();
                StringBuffer sb = new StringBuffer(n);
+               encodeToBuffer(n, s, sb);
+               return sb.toString();
+       }
+
+       public static void encodeToBuffer(String s, StringBuffer sb) {
+               encodeToBuffer(s.length(), s, sb);
+       }
+       
+       private static void encodeToBuffer(int n, String s, StringBuffer sb) {
                for (int i = 0; i < n; i++) {
                        char c = s.charAt(i);
                        if(Character.isLetterOrDigit(c)){ //only special 
characters need checking
@@ -30,7 +39,7 @@
                                sb.append(c);
                }
                }
-               return sb.toString();
+               
        }

        static {

Modified: trunk/freenet/src/freenet/support/HTMLNode.java
===================================================================
--- trunk/freenet/src/freenet/support/HTMLNode.java     2007-05-03 22:16:01 UTC 
(rev 13139)
+++ trunk/freenet/src/freenet/support/HTMLNode.java     2007-05-03 22:17:55 UTC 
(rev 13140)
@@ -136,7 +136,7 @@

        public StringBuffer generate(StringBuffer tagBuffer) {
                if (name.equals("#")) {
-                       tagBuffer.append(HTMLEncoder.encode(content));
+                       HTMLEncoder.encodeToBuffer(content, tagBuffer);
                        return tagBuffer;
                }
                // Perhaps this should be something else, but since I don't 
know if '#' was not just arbitrary chosen, I'll just pick '%'
@@ -151,7 +151,11 @@
                        Map.Entry attributeEntry = (Map.Entry) 
attributeIterator.next();
                        String attributeName = (String) attributeEntry.getKey();
                        String attributeValue = (String) 
attributeEntry.getValue();
-                       tagBuffer.append(' 
').append(HTMLEncoder.encode(attributeName)).append("=\"").append(HTMLEncoder.encode(attributeValue)).append('"');
+                       tagBuffer.append(' ');
+                       HTMLEncoder.encodeToBuffer(attributeName, tagBuffer);
+                       tagBuffer.append("=\"");
+                       HTMLEncoder.encodeToBuffer(attributeValue, tagBuffer);
+                       tagBuffer.append('"');;
                }
                if (children.size() == 0) {
                        if (name.equals("textarea") || name.equals("div") || 
name.equals("a")) {


Reply via email to