X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Futil%2FToHTML.java;h=3d52562e172a4c316efc2557fd2d5541a495f2f8;hp=88e4f57b24de60dc8c2f5a73451593a44a53bed4;hb=92d14ef4956f39a591363709ed95bfa2999dc319;hpb=c4b4207ce1be50359c6bd8abe1d657ff8ae8ad6e diff --git a/src/edu/berkeley/sbp/util/ToHTML.java b/src/edu/berkeley/sbp/util/ToHTML.java index 88e4f57..3d52562 100644 --- a/src/edu/berkeley/sbp/util/ToHTML.java +++ b/src/edu/berkeley/sbp/util/ToHTML.java @@ -9,30 +9,45 @@ public interface ToHTML { private final StringBuffer sb; public HTML(StringBuffer sb) { this.sb = sb; } - public void appendLiterally(String s) { - sb.append(s); - } - public void append(String s) { - /* FIXME */ - sb.append(s); - } + public void appendLiterally(String s) { sb.append(s); } + public void appendLiterally(char c) { sb.append(c); } public void appendText(String s) { - /* FIXME: escapify this!!! */ - sb.append(s); + sb.append(escapify(s)); + } + + public String escapify(String s) { + StringBuffer sb = new StringBuffer(); + for(int i=0; i': sb.append(">"); break; + case '\'': sb.append("'"); break; + case '\"': sb.append("""); break; + default: + if (c < 32 || c >= 127) { + sb.append("&#x" + Integer.toString((int)(c & 0xffff), 16) + ";"); + } else { + sb.append(c); + } + } + } + return sb.toString(); } - public void entity(int entity) { sb.append("&#"+entity+";"); } - public void entity(String entity) { sb.append("&"+entity+";"); } + public void entity(int entity) { appendLiterally("&#"+entity+";"); } + public void entity(String entity) { appendLiterally("&"+entity+";"); } public void append(Object o) { - if (o==null) append("null"); + if (o==null) appendLiterally("null"); else if (o instanceof ToHTML) ((ToHTML)o).toHTML(this); else if (o instanceof Object[]) append((Object[])o); - else append(o.toString()); + else appendText(o.toString()); } public void append(int i) { sb.append(i); } - public void append(char c) { sb.append(c); } + public void append(char c) { append(""+c); } public void append(Object[] o) { for(int i=0; i"); + appendLiterally("<"); + appendLiterally(s); + appendLiterally("/>"); } + public void openTag(String s) { openTag(s, null); } public void openTag(String s, Object[] attrs) { - sb.append("<"); - append(s); - if (attrs != null) - for(int i=0; i"); + appendLiterally("<"); + appendLiterally(s); + if (attrs != null) + for(int i=0; i"); } public void closeTag(String s) { - sb.append("<"); - append(s); - sb.append(">"); + appendLiterally(""); } public void tag(String s, Object o) { tag(s, null, o); } public void tag(String s, Object[] attrs, Object o) { if (s != null) openTag(s, attrs); append(o); if (s != null) { - sb.append(""); + appendLiterally(""); } }