Azu::Markup is a Crystal DSL for HTML that enables writing HTML in plain Crystal, ensuring type-safe HTML with valid syntax, and automatically escapes attribute values. It supports HTML 4 and 5, and XHTML.
Example Usage
p "A paragraph"
# => <p>A paragraph</p>
p do
text "A paragraph"
end
# => <p>A paragraph</p>
h1 "A first-level heading", class: "heading"
# => <h1 class='heading'>A first-level heading</h1>
h1 class: "heading" do
text "A first-level heading"
end
# => <h1 class='heading'>A first-level heading</h1>
ul id: "a-wrapper", class: "list-wrap" do
["aa", "bb", "cc"].each do |x|
li x, class: "list-item"
end
end
#=> <ul id='a-wrapper' class='list-wrap'>
<li class='list-item'>aa</li>
<li class='list-item'>bb</li>
<li class='list-item'>cc</li>
</ul>
input type: "checkbox", checked: nil
# => HTML 4, 5: <input type='checkbox' checked>
# => XHTML: <input type='checkbox' checked='checked' />