GitHub - crystal-lang/html_builder: DSL for creating HTML (original) (raw)

html_builder Build Status

DSL for creating HTML programatically (extracted from Crystal's standard library).

Installation

Add this to your application's shard.yml:

dependencies: html_builder: github: crystal-lang/html_builder

Usage

Basic usage

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):

crystal is awesome

Full HTML5 page

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 :

Crystal Programming Language
<meta charset="UTF-8">
Crystal rocks!

Custom tags

html = HTML.build do tag("v-button", to: "home") { text "Home" } end

puts html

Output:

Home

Safety

HTML::Builder escapes attribute values:

html = HTML.build do a(href: "<>") { } end

puts html

Output:

And escapes text:

html = HTML.build do a { text "<>" } end

puts html

Output:

Contributing

  1. Fork it ( https://github.com/crystal-lang/html_builder/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request