Added basic HTML generation and response handling.
[jrw.git] / src / jrw / sp / xhtml.java
1 package jrw.sp;
2
3 import jrw.*;
4 import java.util.*;
5 import static jrw.sp.cons.populate;
6
7 public class xhtml {
8     public static final Namespace ns = new Namespace("http://www.w3.org/1999/xhtml", "h");
9     public static final DocType doctype = new DocType("html", "-//W3C//DTD XHTML 1.1//EN", "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd");
10
11     public static class cons {
12         private static final Name html = new Name(ns, "html");
13         public static Element html(Object... c) {return(populate(new Element(html), c));}
14         private static final Name head = new Name(ns, "head");
15         public static Element head(Object... c) {return(populate(new Element(head), c));}
16         private static final Name base = new Name(ns, "base");
17         public static Element base(Object... c) {return(populate(new Element(base), c));}
18         private static final Name title = new Name(ns, "title");
19         public static Element title(Object... c) {return(populate(new Element(title), c));}
20         private static final Name link = new Name(ns, "link");
21         public static Element link(Object... c) {return(populate(new Element(link), c));}
22         private static final Name meta = new Name(ns, "meta");
23         public static Element meta(Object... c) {return(populate(new Element(meta), c));}
24         private static final Name style = new Name(ns, "style");
25         public static Element style(Object... c) {return(populate(new Element(style), c));}
26         private static final Name script = new Name(ns, "script");
27         public static Element script(Object... c) {return(populate(new Element(script), c));}
28         private static final Name body = new Name(ns, "body");
29         public static Element body(Object... c) {return(populate(new Element(body), c));}
30         private static final Name div = new Name(ns, "div");
31         public static Element div(Object... c) {return(populate(new Element(div), c));}
32         private static final Name span = new Name(ns, "span");
33         public static Element span(Object... c) {return(populate(new Element(span), c));}
34         private static final Name p = new Name(ns, "p");
35         public static Element p(Object... c) {return(populate(new Element(p), c));}
36         private static final Name ul = new Name(ns, "ul");
37         public static Element ul(Object... c) {return(populate(new Element(ul), c));}
38         private static final Name ol = new Name(ns, "ol");
39         public static Element ol(Object... c) {return(populate(new Element(ol), c));}
40         private static final Name li = new Name(ns, "li");
41         public static Element li(Object... c) {return(populate(new Element(li), c));}
42         private static final Name dl = new Name(ns, "dl");
43         public static Element dl(Object... c) {return(populate(new Element(dl), c));}
44         private static final Name dt = new Name(ns, "dt");
45         public static Element dt(Object... c) {return(populate(new Element(dt), c));}
46         private static final Name dd = new Name(ns, "dd");
47         public static Element dd(Object... c) {return(populate(new Element(dd), c));}
48         private static final Name table = new Name(ns, "table");
49         public static Element table(Object... c) {return(populate(new Element(table), c));}
50         private static final Name th = new Name(ns, "th");
51         public static Element th(Object... c) {return(populate(new Element(th), c));}
52         private static final Name tr = new Name(ns, "tr");
53         public static Element tr(Object... c) {return(populate(new Element(tr), c));}
54         private static final Name td = new Name(ns, "td");
55         public static Element td(Object... c) {return(populate(new Element(td), c));}
56         private static final Name a = new Name(ns, "a");
57         public static Element a(Object... c) {return(populate(new Element(a), c));}
58         private static final Name img = new Name(ns, "img");
59         public static Element img(Object... c) {return(populate(new Element(img), c));}
60         private static final Name video = new Name(ns, "video");
61         public static Element video(Object... c) {return(populate(new Element(video), c));}
62         private static final Name audio = new Name(ns, "audio");
63         public static Element audio(Object... c) {return(populate(new Element(audio), c));}
64         private static final Name source = new Name(ns, "source");
65         public static Element source(Object... c) {return(populate(new Element(source), c));}
66         private static final Name track = new Name(ns, "track");
67         public static Element track(Object... c) {return(populate(new Element(track), c));}
68         private static final Name form = new Name(ns, "form");
69         public static Element form(Object... c) {return(populate(new Element(form), c));}
70         private static final Name input = new Name(ns, "input");
71         public static Element input(Object... c) {return(populate(new Element(input), c));}
72         private static final Name em = new Name(ns, "em");
73         public static Element em(Object... c) {return(populate(new Element(em), c));}
74         private static final Name strong = new Name(ns, "strong");
75         public static Element strong(Object... c) {return(populate(new Element(strong), c));}
76         private static final Name hr = new Name(ns, "hr");
77         public static Element hr(Object... c) {return(populate(new Element(hr), c));}
78         private static final Name br = new Name(ns, "br");
79         public static Element br(Object... c) {return(populate(new Element(br), c));}
80         private static final Name blockquote = new Name(ns, "blockquote");
81         public static Element blockquote(Object... c) {return(populate(new Element(blockquote), c));}
82         private static final Name code = new Name(ns, "code");
83         public static Element code(Object... c) {return(populate(new Element(code), c));}
84         private static final Name pre = new Name(ns, "pre");
85         public static Element pre(Object... c) {return(populate(new Element(pre), c));}
86         private static final Name h1 = new Name(ns, "h1");
87         public static Element h1(Object... c) {return(populate(new Element(h1), c));}
88         private static final Name h2 = new Name(ns, "h2");
89         public static Element h2(Object... c) {return(populate(new Element(h2), c));}
90         private static final Name h3 = new Name(ns, "h3");
91         public static Element h3(Object... c) {return(populate(new Element(h3), c));}
92         private static final Name h4 = new Name(ns, "h4");
93         public static Element h4(Object... c) {return(populate(new Element(h4), c));}
94         private static final Name h5 = new Name(ns, "h5");
95         public static Element h5(Object... c) {return(populate(new Element(h5), c));}
96         private static final Name h6 = new Name(ns, "h6");
97         public static Element h6(Object... c) {return(populate(new Element(h6), c));}
98     }
99
100     public static Map<Object, Object> response(Request req, Element root) {
101         // XXX: Use proper Content-Type for clients accepting it.
102         req.ohead("Content-Type", "text/html; charset=utf-8", true);
103         req.body(new HtmlFormatter(root));
104         return(req.response());
105     }
106 }