diff --git a/src/helma/util/HtmlEncoder.java b/src/helma/util/HtmlEncoder.java
index 2fb5ba44..63d6f027 100644
--- a/src/helma/util/HtmlEncoder.java
+++ b/src/helma/util/HtmlEncoder.java
@@ -124,60 +124,60 @@ public final class HtmlEncoder {
/**
*
*/
- public final static String encode (String what) {
+ public final static String encode (String str) {
// try to make stringbuffer large enough from the start
- StringBuffer ret = new StringBuffer (Math.round (what.length()*1.4f));
- encode (what, ret);
+ StringBuffer ret = new StringBuffer (Math.round (str.length()*1.4f));
+ encode (str, ret);
return ret.toString();
}
/**
*
*/
- public final static void encode (String what, StringBuffer ret) {
- if (what == null || what.length() == 0) {
+ public final static void encode (String str, StringBuffer ret) {
+ if (str == null)
return;
- }
-
- StringReader in = new StringReader (what);
- int c;
+
+ int l = str.length();
+
boolean closeTag=false, readTag=false, tagOpen=false;
// the difference between swallowOneNewline and ignoreNewline is that swallowOneNewline is just effective once (for the next newline)
- boolean ignoreNewline = false;
+ boolean ignoreNewline = false;
boolean swallowOneNewline = false;
StringBuffer tag = new StringBuffer ();
- try {
- while ((c = in.read()) != -1) {
- if (readTag) {
- if (Character.isLetterOrDigit ((char) c))
- tag.append ((char) c);
- else if ('/' == c)
- closeTag = true;
- else {
- String t = tag.toString ();
- // set ignoreNewline on some tags, depending on wheather they're
- // being opened or closed.
- // what's going on here? we switch newline encoding on inside some tags, for
- // others we switch it on when they're closed
- if ("td".equalsIgnoreCase (t) || "th".equalsIgnoreCase (t) || "li".equalsIgnoreCase (t)) {
- ignoreNewline = closeTag;
- swallowOneNewline = true;
- } else if ("table".equalsIgnoreCase (t) || "ul".equalsIgnoreCase (t) || "ol".equalsIgnoreCase (t) || "pre".equalsIgnoreCase (t)) {
- ignoreNewline = !closeTag;
- swallowOneNewline = true;
- } else if ("p".equalsIgnoreCase (t)) {
- swallowOneNewline = true;
- }
+
+ for (int i=0; i');
break;
default:
- if (c < 160)
- ret.append ((char) c);
+ ret.append (c);
+ // if (c < 160)
+ // ret.append ((char) c);
// else if (c >= 160 && c <= 255)
// ret.append (convertor.get(new Integer(c)));
- else {
- ret.append ("");
- ret.append (c);
- ret.append (";");
- }
- if (!tagOpen && !Character.isWhitespace ((char)c))
+ // else {
+ // ret.append ("");
+ // ret.append (c);
+ // ret.append (";");
+ // }
+ if (!tagOpen && !Character.isWhitespace (c))
swallowOneNewline = false;
- }
}
- } catch (IOException e) {}
+ }
}
/**
*
*/
- public final static String encodeFormValue (String what) {
- StringBuffer ret = new StringBuffer (Math.round (what.length()*1.4f));
- encodeAll (what, ret, false);
+ public final static String encodeFormValue (String str) {
+ StringBuffer ret = new StringBuffer (Math.round (str.length()*1.2f));
+ encodeAll (str, ret, false);
return ret.toString();
}
@@ -226,17 +226,17 @@ public final class HtmlEncoder {
/**
*
*/
- public final static String encodeAll (String what) {
- StringBuffer ret = new StringBuffer (Math.round (what.length()*1.4f));
- encodeAll (what, ret, true);
+ public final static String encodeAll (String str) {
+ StringBuffer ret = new StringBuffer (Math.round (str.length()*1.2f));
+ encodeAll (str, ret, true);
return ret.toString();
}
/**
*
*/
- public final static String encodeAll (String what, StringBuffer ret) {
- encodeAll (what, ret, true);
+ public final static String encodeAll (String str, StringBuffer ret) {
+ encodeAll (str, ret, true);
return ret.toString();
}
@@ -244,116 +244,76 @@ public final class HtmlEncoder {
/**
*
*/
- public final static void encodeAll (String what, StringBuffer ret, boolean encodeNewline) {
- if (what == null || what.length() == 0) {
+ public final static void encodeAll (String str, StringBuffer ret, boolean encodeNewline) {
+ if (str == null)
return;
- }
- StringReader in = new StringReader (what);
- int c;
- try {
- while ((c = in.read()) != -1) {
- switch (c) {
- case '<' :
+ int l = str.length();
+ for (int i=0; i':
+ case '>':
ret.append (">");
break;
- case '&':
+ case '&':
ret.append ("&");
break;
- case '"':
+ case '"':
ret.append (""");
break;
- case '\n':
+ case '\n':
ret.append ('\n');
if (encodeNewline) {
ret.append ("
");
}
break;
- default:
- if (c < 160)
- ret.append ((char) c);
+ default:
+ ret.append (c);
+ // if (c < 160)
+ // ret.append ((char) c);
// else if (c >= 160 && c <= 255)
// ret.append (convertor.get(new Integer(c)));
- else {
- ret.append ("");
- ret.append (c);
- ret.append (";");
- }
- }
+ // else {
+ // ret.append ("");
+ // ret.append (c);
+ // ret.append (";");
+ // }
}
- } catch (IOException e) {}
- }
-
- public final static String encodeSoft (String what) {
- StringBuffer ret = new StringBuffer (Math.round (what.length()*1.4f));
- encodeSoft (what, ret);
- return ret.toString();
- }
-
- public final static void encodeSoft (String what, StringBuffer ret) {
- if (what == null || what.length() == 0) {
- return;
}
-
- StringReader in = new StringReader (what);
- int c;
- try {
- while ((c = in.read()) != -1) {
- switch (c) {
- case 128: // Euro-Symbol. This is for missing Unicode support in TowerJ.
- ret.append ("€");
- break;
- default:
- if (c < 160)
- ret.append ((char) c);
- // else if (c >= 160 && c <= 255)
- // ret.append (convertor.get(new Integer(c)));
- else {
- ret.append ("");
- ret.append (c);
- ret.append (";");
- }
- }
- }
- } catch (IOException e) {}
}
- public final static String encodeXml (String what) {
- StringBuffer ret = new StringBuffer (Math.round (what.length()*1.4f));
- encodeXml (what, ret);
+ public final static String encodeXml (String str) {
+ StringBuffer ret = new StringBuffer (Math.round (str.length()*1.2f));
+ encodeXml (str, ret);
return ret.toString();
}
- public final static void encodeXml (String what, StringBuffer ret) {
- if (what == null || what.length() == 0) {
+ public final static void encodeXml (String str, StringBuffer ret) {
+ if (str == null)
return;
- }
- StringReader in = new StringReader (what);
- int c;
- try {
- while ((c = in.read()) != -1) {
- switch (c) {
- case '<' :
+ int l = str.length();
+ for (int i=0; i':
+ case '>':
ret.append (">");
break;
- case '&':
+ case '&':
ret.append ("&");
break;
- default:
- ret.append ((char) c);
- }
+ default:
+ ret.append (c);
}
- } catch (IOException e) {}
+ }
}
-
-}
+} // end of class