struct HTML::Builder

Overview

HTML::Builder

HTML::Builder is a library for representing HTML in Crystal.

Usage:

html = HTML::Builder.new.a({href: "google.com"}) do
  text "crystal is awesome"
end

puts html # => "<a href="google.com">crystal is awesome</a>

Or also you can use #build method:

HTML::Builder.new.build do
  a({href: "google.com"}) do
    text "crystal is awesome"
  end
end # => "<a href="google.com">crystal is awesome</a>

Superclass hierarchy

Object
Value
Struct
HTML::Builder

Defined in:

Class Method Summary

Instance Method Summary

Class Method Detail

def self.new

Instance Method Detail

def a(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders A html tag with any options.

HTML::Builder.new.build do
  a({ class: "crystal" }) { text "crystal is awesome" }
end
# => <a class="crystal">crystal is awesome</a>

def b(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders B html tag with any options.

HTML::Builder.new.build do
  b({ class: "crystal" }) { text "crystal is awesome" }
end
# => <b class="crystal">crystal is awesome</b>

def body(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders BODY html tag with any options.

HTML::Builder.new.build do
  body({ class: "crystal" }) { text "crystal is awesome" }
end
# => <body class="crystal">crystal is awesome</body>

def br

Renders BR html tag.

HTML::Builder.new.build { br } # => <br/>

def build(&block)

def button(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders BUTTON html tag with any options.

HTML::Builder.new.build do
  button({ class: "crystal" }) { text "crystal is awesome" }
end
# => <button class="crystal">crystal is awesome</button>

def div(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders DIV html tag with any options.

HTML::Builder.new.build do
  div({ class: "crystal" }) { text "crystal is awesome" }
end
# => <div class="crystal">crystal is awesome</div>

def doctype

Renders HTML doctype tag.

HTML::Builder.new.build { doctype } # => <doctype/>

def em(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders EM html tag with any options.

HTML::Builder.new.build do
  em({ class: "crystal" }) { text "crystal is awesome" }
end
# => <em class="crystal">crystal is awesome</em>

def form(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders FORM html tag with any options.

HTML::Builder.new.build do
  form({ class: "crystal" }) { text "crystal is awesome" }
end
# => <form class="crystal">crystal is awesome</form>

def h1(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders H1 html tag with any options.

HTML::Builder.new.build do
  h1({ class: "crystal" }) { text "crystal is awesome" }
end
# => <h1 class="crystal">crystal is awesome</h1>

def h2(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders H2 html tag with any options.

HTML::Builder.new.build do
  h2({ class: "crystal" }) { text "crystal is awesome" }
end
# => <h2 class="crystal">crystal is awesome</h2>

def h3(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders H3 html tag with any options.

HTML::Builder.new.build do
  h3({ class: "crystal" }) { text "crystal is awesome" }
end
# => <h3 class="crystal">crystal is awesome</h3>

def head(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders HEAD html tag with any options.

HTML::Builder.new.build do
  head({ class: "crystal" }) { text "crystal is awesome" }
end
# => <head class="crystal">crystal is awesome</head>

def hr

Renders HR html tag.

HTML::Builder.new.build { hr } # => <hr/>

def html(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders HTML html tag with any options.

HTML::Builder.new.build do
  html({ class: "crystal" }) { text "crystal is awesome" }
end
# => <html class="crystal">crystal is awesome</html>

def i(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders I html tag with any options.

HTML::Builder.new.build do
  i({ class: "crystal" }) { text "crystal is awesome" }
end
# => <i class="crystal">crystal is awesome</i>

def img(attrs = nil : Hash(Symbol, String) | Nil)

Renders IMG html tag with any options.

HTML::Builder.new.build do
  img({ class: "crystal" })
end
# => <img class="crystal">

def input(attrs = nil : Hash(Symbol, String) | Nil)

Renders INPUT html tag with any options.

HTML::Builder.new.build do
  input({ class: "crystal" })
end
# => <input class="crystal">

def li(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders LI html tag with any options.

HTML::Builder.new.build do
  li({ class: "crystal" }) { text "crystal is awesome" }
end
# => <li class="crystal">crystal is awesome</li>

def link(attrs = nil : Hash(Symbol, String) | Nil)

Renders LINK html tag with any options.

HTML::Builder.new.build do
  link({ class: "crystal" })
end
# => <link class="crystal">

def ol(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders OL html tag with any options.

HTML::Builder.new.build do
  ol({ class: "crystal" }) { text "crystal is awesome" }
end
# => <ol class="crystal">crystal is awesome</ol>

def p(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders P html tag with any options.

HTML::Builder.new.build do
  p({ class: "crystal" }) { text "crystal is awesome" }
end
# => <p class="crystal">crystal is awesome</p>

def s(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders S html tag with any options.

HTML::Builder.new.build do
  s({ class: "crystal" }) { text "crystal is awesome" }
end
# => <s class="crystal">crystal is awesome</s>

def script(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders SCRIPT html tag with any options.

HTML::Builder.new.build do
  script({ class: "crystal" }) { text "crystal is awesome" }
end
# => <script class="crystal">crystal is awesome</script>

def span(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders SPAN html tag with any options.

HTML::Builder.new.build do
  span({ class: "crystal" }) { text "crystal is awesome" }
end
# => <span class="crystal">crystal is awesome</span>

def strong(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders STRONG html tag with any options.

HTML::Builder.new.build do
  strong({ class: "crystal" }) { text "crystal is awesome" }
end
# => <strong class="crystal">crystal is awesome</strong>

def table(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders TABLE html tag with any options.

HTML::Builder.new.build do
  table({ class: "crystal" }) { text "crystal is awesome" }
end
# => <table class="crystal">crystal is awesome</table>

def tbody(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders TBODY html tag with any options.

HTML::Builder.new.build do
  tbody({ class: "crystal" }) { text "crystal is awesome" }
end
# => <tbody class="crystal">crystal is awesome</tbody>

def td(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders TD html tag with any options.

HTML::Builder.new.build do
  td({ class: "crystal" }) { text "crystal is awesome" }
end
# => <td class="crystal">crystal is awesome</td>

def text(text)

Renders escaped text in html tag.

HTML::Builder.new.build { text "crystal is awesome" }
# => crystal is awesome

def textarea(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders TEXTAREA html tag with any options.

HTML::Builder.new.build do
  textarea({ class: "crystal" }) { text "crystal is awesome" }
end
# => <textarea class="crystal">crystal is awesome</textarea>

def thead(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders THEAD html tag with any options.

HTML::Builder.new.build do
  thead({ class: "crystal" }) { text "crystal is awesome" }
end
# => <thead class="crystal">crystal is awesome</thead>

def title(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders TITLE html tag with any options.

HTML::Builder.new.build do
  title({ class: "crystal" }) { text "crystal is awesome" }
end
# => <title class="crystal">crystal is awesome</title>

def tr(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders TR html tag with any options.

HTML::Builder.new.build do
  tr({ class: "crystal" }) { text "crystal is awesome" }
end
# => <tr class="crystal">crystal is awesome</tr>

def u(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders U html tag with any options.

HTML::Builder.new.build do
  u({ class: "crystal" }) { text "crystal is awesome" }
end
# => <u class="crystal">crystal is awesome</u>

def ul(attrs = nil : Hash(Symbol, String) | Nil, &block)

Renders UL html tag with any options.

HTML::Builder.new.build do
  ul({ class: "crystal" }) { text "crystal is awesome" }
end
# => <ul class="crystal">crystal is awesome</ul>