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")) {