more improvements to TibDoc
[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 entity(int entity) { sb.append("&#"+entity+";"); }
18         public void entity(String entity) { sb.append("&"+entity+";"); }
19
20         public void append(Object o) {
21             if (o==null)                    append("<tt><font color=red>null</font></tt>");
22             else if (o instanceof ToHTML)   ((ToHTML)o).toHTML(this);
23             else if (o instanceof Object[]) append((Object[])o);
24             else                            append(o.toString());
25         }
26         public void append(int i) { sb.append(i); }
27         public void append(char c) { sb.append(c); }
28
29         public void append(Object[] o) {
30             for(int i=0; i<o.length; i++) {
31                 if (i>0) append(' ');
32                 append(o[i]);
33             }
34         }
35
36         public void tag(String s) {
37             sb.append("<");
38             append(s);
39             sb.append("/>");
40         }
41         public void tag(String s, Object o) { tag(s, null, o); }
42         public void tag(String s, Object[] attrs, Object o) {
43             if (s != null) {
44                 sb.append("<");
45                 append(s);
46                 if (attrs != null)
47                     for(int i=0; i<attrs.length; i+=2) {
48                         sb.append(' ');
49                         append(attrs[i]);
50                         sb.append("=\'");
51                         append(attrs[i+1]);
52                         sb.append("\'");
53                     }
54                 sb.append(">");
55             }
56             append(o);
57             if (s != null) {
58                 sb.append("</");
59                 append(s);
60                 sb.append(">");
61             }
62         }
63
64     }
65 }