88e4f57b24de60dc8c2f5a73451593a44a53bed4
[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 appendLiterally(String s) {
13             sb.append(s);
14         }
15         public void append(String s) {
16             /* FIXME */
17             sb.append(s);
18         }
19
20         public void appendText(String s) {
21             /* FIXME: escapify this!!! */
22             sb.append(s);
23         }
24
25         public void entity(int entity) { sb.append("&#"+entity+";"); }
26         public void entity(String entity) { sb.append("&"+entity+";"); }
27
28         public void append(Object o) {
29             if (o==null)                    append("<tt><font color=red>null</font></tt>");
30             else if (o instanceof ToHTML)   ((ToHTML)o).toHTML(this);
31             else if (o instanceof Object[]) append((Object[])o);
32             else                            append(o.toString());
33         }
34         public void append(int i) { sb.append(i); }
35         public void append(char c) { sb.append(c); }
36
37         public void append(Object[] o) {
38             for(int i=0; i<o.length; i++) {
39                 if (i>0) append(' ');
40                 append(o[i]);
41             }
42         }
43
44         public void tag(String s) {
45             sb.append("<");
46             append(s);
47             sb.append("/>");
48         }
49         public void openTag(String s, Object[] attrs) {
50                 sb.append("<");
51                 append(s);
52                 if (attrs != null)
53                     for(int i=0; i<attrs.length; i+=2) {
54                         sb.append(' ');
55                         append(attrs[i]);
56                         sb.append("=\'");
57                         append(attrs[i+1]);
58                         sb.append("\'");
59                     }
60                 sb.append(">");
61         }
62         public void closeTag(String s) {
63             sb.append("<");
64             append(s);
65             sb.append(">");
66         }
67         public void tag(String s, Object o) { tag(s, null, o); }
68         public void tag(String s, Object[] attrs, Object o) {
69             if (s != null) openTag(s, attrs);
70             append(o);
71             if (s != null) {
72                 sb.append("</");
73                 append(s);
74                 sb.append(">");
75             }
76         }
77
78     }
79 }