package html; import java.io.IOException; import java.io.Writer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import common.Writable; public class HtmlElem implements Writable { private final String _name; public HtmlElem(String name, Writable...cs) { _name = name; for(Writable c : cs) { _content.add(c); } } private final Map<String,String> _attrs = new HashMap<String,String>(); public final HtmlElem withAttr(String name, String value) { _attrs.put(name, value); return this; } private final List<Writable> _content = new ArrayList<Writable>(); public final HtmlElem withContent(Writable w) { _content.add(w); return this; } @Override public void writeTo(Writer w) throws IOException { w.write(String.format("<%s",_name)); for(Map.Entry<String,String> entry : _attrs.entrySet()) { w.write(String.format(" %s='%s'",entry.getKey(), entry.getValue())); } w.write(">"); for(Writable c : _content) { c.writeTo(w); } w.write(String.format("</%s>",_name)); } }