34d03bf73f65db31f04e3a7adf5eeeb6b325f48a
[sbp.git] / src / edu / berkeley / sbp / util / ToHTML.java
1 package edu.berkeley.sbp.util;
2 import java.io.*;
3 import java.util.*;
4
5 public interface ToHTML {
6     public void toHTML(HTML h);
7
8     public static class HTML {
9         private final StringBuffer sb;
10         public HTML(StringBuffer sb) { this.sb = sb; }
11
12         public void append(String s) {
13             /* FIXME */
14             sb.append(s);
15         }
16
17         public void appendText(String s) {
18             /* FIXME: escapify this!!! */
19             sb.append(s);
20         }
21
22         public void entity(int entity) { sb.append("&#"+entity+";"); }
23         public void entity(String entity) { sb.append("&"+entity+";"); }
24
25         public void append(Object o) {
26             if (o==null)                    append("<tt><font color=red>null</font></tt>");
27             else if (o instanceof ToHTML)   ((ToHTML)o).toHTML(this);
28             else if (o instanceof Object[]) append((Object[])o);
29             else                            append(o.toString());
30         }
31         public void append(int i) { sb.append(i); }
32         public void append(char c) { sb.append(c); }
33
34         public void append(Object[] o) {
35             for(int i=0; i<o.length; i++) {
36                 if (i>0) append(' ');
37                 append(o[i]);
38             }
39         }
40
41         public void tag(String s) {
42             sb.append("<");
43             append(s);
44             sb.append("/>");
45         }
46         public void tag(String s, Object o) { tag(s, null, o); }
47         public void tag(String s, Object[] attrs, Object o) {
48             if (s != null) {
49                 sb.append("<");
50                 append(s);
51                 if (attrs != null)
52                     for(int i=0; i<attrs.length; i+=2) {
53                         sb.append(' ');
54                         append(attrs[i]);
55                         sb.append("=\'");
56                         append(attrs[i+1]);
57                         sb.append("\'");
58                     }
59                 sb.append(">");
60             }
61             append(o);
62             if (s != null) {
63                 sb.append("</");
64                 append(s);
65                 sb.append(">");
66             }
67         }
68
69     }
70 }