added pre to list of tags where newlines are not encoded

This commit is contained in:
hns 2001-02-15 12:41:27 +00:00
parent 523c05a3dc
commit 511f151546

View file

@ -141,7 +141,9 @@ public final class HtmlEncoder {
StringReader in = new StringReader (what); StringReader in = new StringReader (what);
int c; int c;
boolean closeTag=false, readTag=false, tagOpen=false; boolean closeTag=false, readTag=false, tagOpen=false;
boolean ignoreNewline = false, swallow = false; // the difference between swallowOneNewline and ignoreNewline is that swallowOneNewline is just effective once (for the next newline)
boolean ignoreNewline = false;
boolean swallowOneNewline = false;
StringBuffer tag = new StringBuffer (); StringBuffer tag = new StringBuffer ();
try { try {
while ((c = in.read()) != -1) { while ((c = in.read()) != -1) {
@ -154,26 +156,16 @@ public final class HtmlEncoder {
String t = tag.toString (); String t = tag.toString ();
// set ignoreNewline on some tags, depending on wheather they're // set ignoreNewline on some tags, depending on wheather they're
// being opened or closed. // being opened or closed.
if ("td".equalsIgnoreCase (t)) { // 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; ignoreNewline = closeTag;
swallow = true; // for some reason, it's a good idea to swallow (ignore) newlines after some tags swallowOneNewline = true;
} else if ("th".equalsIgnoreCase (t)) { } else if ("table".equalsIgnoreCase (t) || "ul".equalsIgnoreCase (t) || "ol".equalsIgnoreCase (t) || "pre".equalsIgnoreCase (t)) {
ignoreNewline = closeTag;
swallow = true;
} else if ("table".equalsIgnoreCase (t)) {
ignoreNewline = !closeTag; ignoreNewline = !closeTag;
swallow = true; swallowOneNewline = true;
} else if ("ul".equalsIgnoreCase (t)) {
ignoreNewline = !closeTag;
swallow = true;
} else if ("ol".equalsIgnoreCase (t)) {
ignoreNewline = !closeTag;
swallow = true;
} else if ("li".equalsIgnoreCase (t)) {
swallow = true;
ignoreNewline = closeTag;
} else if ("p".equalsIgnoreCase (t)) { } else if ("p".equalsIgnoreCase (t)) {
swallow = true; swallowOneNewline = true;
} }
readTag = false; readTag = false;
@ -187,11 +179,11 @@ public final class HtmlEncoder {
// ret.append ("&"); // ret.append ("&");
// break; // break;
case '\n': case '\n':
if (!ignoreNewline && !swallow) if (!ignoreNewline && !swallowOneNewline)
ret.append ("<br>"); ret.append ("<br>");
ret.append ('\n'); ret.append ('\n');
if (!tagOpen) if (!tagOpen)
swallow = false; swallowOneNewline = false;
break; break;
case '<': case '<':
closeTag = false; closeTag = false;
@ -214,7 +206,7 @@ public final class HtmlEncoder {
ret.append (";"); ret.append (";");
} }
if (!tagOpen && !Character.isWhitespace ((char)c)) if (!tagOpen && !Character.isWhitespace ((char)c))
swallow = false; swallowOneNewline = false;
} }
} }
} catch (IOException e) {} } catch (IOException e) {}