# HTMLPage use fluent interface so you can chain calls as:
# add("div").attr("id", "mydiv").text("My Div")
class HTMLPage
- super Streamable
+ super Writable
# Define head content
fun head do end
end
end
+# An HTML element.
class HTMLTag
- super Streamable
+ super Writable
- # HTML tagname: 'div' for <div></div>
+ # HTML element type.
+ #
+ # `"div"` for `<div></div>`.
var tag: String
init do
self.is_void = (once ["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]).has(tag)
# assert (new HTMLTag("p")).is_void == false
var is_void: Bool is noinit
+ # Create a HTML elements with the specifed type and attributes.
init with_attrs(tag: String, attrs: Map[String, String]) do
self.tag = tag
self.attrs = attrs
# Set a 'value' for 'key'
# var img = new HTMLTag("img")
# img.attr("src", "./image.png").attr("alt", "image")
- # assert img.write_to_string == """<img src="./image.png" alt="image"/>"""
+ # assert img.write_to_string == """<img src="./image.png" alt="image"/>"""
fun attr(key: String, value: String): HTMLTag do
attrs[key] = value
return self
private class HTMLRaw
super HTMLTag
- private var content: String
+ var content: String
redef fun render_in(res) do res.add content
end