checkpoint
[sbp.git] / src / edu / berkeley / sbp / util / ToHTML.java
index bec40bf..88e4f57 100644 (file)
@@ -8,10 +8,23 @@ public interface ToHTML {
     public static class HTML {
         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 appendText(String s) {
+            /* FIXME: escapify this!!! */
+            sb.append(s);
+        }
+
+        public void entity(int entity) { sb.append("&#"+entity+";"); }
+        public void entity(String entity) { sb.append("&"+entity+";"); }
+
         public void append(Object o) {
             if (o==null)                    append("<tt><font color=red>null</font></tt>");
             else if (o instanceof ToHTML)   ((ToHTML)o).toHTML(this);
@@ -28,17 +41,37 @@ public interface ToHTML {
             }
         }
 
-        public void tag(String s, Object o) {
-            if (s != null) {
-                append("<");
+        public void tag(String s) {
+            sb.append("<");
+            append(s);
+            sb.append("/>");
+        }
+        public void openTag(String s, Object[] attrs) {
+                sb.append("<");
                 append(s);
-                append(">");
-            }
+                if (attrs != null)
+                    for(int i=0; i<attrs.length; i+=2) {
+                        sb.append(' ');
+                        append(attrs[i]);
+                        sb.append("=\'");
+                        append(attrs[i+1]);
+                        sb.append("\'");
+                    }
+                sb.append(">");
+        }
+        public void closeTag(String s) {
+            sb.append("<");
+            append(s);
+            sb.append(">");
+        }
+        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) {
-                append("</");
+                sb.append("</");
                 append(s);
-                append(">");
+                sb.append(">");
             }
         }