DSL for creating HTML programatically (extracted from Crystal's standard library).
Add this to your application's shard.yml
:
dependencies:
html_builder:
github: crystal-lang/html_builder
require "html_builder"
html = HTML.build do
a(href: "http://crystal-lang.org") do
text "crystal is awesome"
end
end
puts html
Output (this output is formatted for better display):
<a href="http://crystal-lang.org">
crystal is awesome
</a>
html = HTML.build do
doctype
html(lang: "pt-BR") do
head do
title { text "Crystal Programming Language" }
meta(charset: "UTF-8")
end
body do
a(href: "http://crystal-lang.org") { text "Crystal rocks!" }
form(method: "POST") do
input(name: "name")
end
end
end
end
puts html
Output :
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<title>Crystal Programming Language</title>
<meta charset="UTF-8">
</head>
<body>
<a href="http://crystal-lang.org">Crystal rocks!</a>
<form method="POST">
<input name="name">
</form>
</body>
</html>
html = HTML.build do
tag("v-button", to: "home") { text "Home" }
end
puts html
Output:
<v-button to="home">
Home
</v-button>
HTML::Builder escapes attribute values:
html = HTML.build do
a(href: "<>") { }
end
puts html
Output:
<a href="<>"></a>
And escapes text:
html = HTML.build do
a { text "<>" }
end
puts html
Output:
<a><></a>
- Fork it ( https://github.com/crystal-lang/html_builder/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request