struct

HTML::Builder

Inherits Struct < Value < Object

Defines a DSL for creating HTML.

Usage:

require "html_builder"

html = HTML.build do
  a(href: "http://crystal-lang.org") do
    text "crystal is awesome"
  end
end

puts html # => %(<a href="http://crystal-lang.org">crystal is awesome</a>)

Constants

VERSION = "0.2.1"

Constructors

Class methods

build

Creates a new HTML::Builder, yields with with with ... yield and then returns the resulting string.

Source

Instance methods

a(attrs, &)

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>
Source
a

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>
Source
article(attrs, &)

Renders ARTICLE html tag with any options.

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

Renders ARTICLE html tag with any options.

HTML::Builder.new.build do
  article(class: "crystal") { text "crystal is awesome" }
end
# => <article class="crystal">crystal is awesome</article>
Source
aside(attrs, &)

Renders ASIDE html tag with any options.

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

Renders ASIDE html tag with any options.

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

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>
Source
b

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>
Source
bdi(attrs, &)

Renders BDI html tag with any options.

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

Renders BDI html tag with any options.

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

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>
Source
body

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>
Source
br

Renders BR html tag.

HTML::Builder.new.build { br } # => <br/>
Source
build
Source
button(attrs, &)

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>
Source
button

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>
Source
details(attrs, &)

Renders DETAILS html tag with any options.

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

Renders DETAILS html tag with any options.

HTML::Builder.new.build do
  details(class: "crystal") { text "crystal is awesome" }
end
# => <details class="crystal">crystal is awesome</details>
Source
dialog(attrs, &)

Renders DIALOG html tag with any options.

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

Renders DIALOG html tag with any options.

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

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>
Source
div

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>
Source
doctype

Renders HTML doctype tag.

HTML::Builder.new.build { doctype } # => <doctype/>
Source
em(attrs, &)

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>
Source
em

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>
Source
fieldset(attrs, &)

Renders FIELDSET html tag with any options.

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

Renders FIELDSET html tag with any options.

HTML::Builder.new.build do
  fieldset(class: "crystal") { text "crystal is awesome" }
end
# => <fieldset class="crystal">crystal is awesome</fieldset>
Source
figcaption(attrs, &)

Renders FIGCAPTION html tag with any options.

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

Renders FIGCAPTION html tag with any options.

HTML::Builder.new.build do
  figcaption(class: "crystal") { text "crystal is awesome" }
end
# => <figcaption class="crystal">crystal is awesome</figcaption>
Source
figure(attrs, &)

Renders FIGURE html tag with any options.

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

Renders FIGURE html tag with any options.

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

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>
Source
form

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>
Source
h1(attrs, &)

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>
Source
h1

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>
Source
h2(attrs, &)

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>
Source
h2

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>
Source
h3(attrs, &)

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>
Source
h3

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>
Source
head(attrs, &)

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>
Source
head

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>
Source
header(attrs, &)

Renders HEADER html tag with any options.

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

Renders HEADER html tag with any options.

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

Renders HR html tag.

HTML::Builder.new.build { hr } # => <hr/>
Source
html(html)

Renders the provided html string.

HTML::Builder.new.build { html "<p>crystal is awesome</p>" }
# => <>crystal is awesome</p>
Source
html(attrs, &)

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>
Source
html

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>
Source
i(attrs, &)

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>
Source
i

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>
Source
img(attrs)

Renders IMG html tag with any options.

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

Renders IMG html tag with any options.

HTML::Builder.new.build do
  img(class: "crystal")
end
# => <img class="crystal">
Source
input(attrs)

Renders INPUT html tag with any options.

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

Renders INPUT html tag with any options.

HTML::Builder.new.build do
  input(class: "crystal")
end
# => <input class="crystal">
Source
label(attrs, &)

Renders LABEL html tag with any options.

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

Renders LABEL html tag with any options.

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

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>
Source
li

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>
Source
main(attrs, &)

Renders MAIN html tag with any options.

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

Renders MAIN html tag with any options.

HTML::Builder.new.build do
  main(class: "crystal") { text "crystal is awesome" }
end
# => <main class="crystal">crystal is awesome</main>
Source
mark(attrs, &)

Renders MARK html tag with any options.

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

Renders MARK html tag with any options.

HTML::Builder.new.build do
  mark(class: "crystal") { text "crystal is awesome" }
end
# => <mark class="crystal">crystal is awesome</mark>
Source
meter(attrs, &)

Renders METER html tag with any options.

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

Renders METER html tag with any options.

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

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>
Source
ol

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>
Source
option(attrs, &)

Renders OPTION html tag with any options.

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

Renders OPTION html tag with any options.

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

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>
Source
p

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>
Source
progress(attrs, &)

Renders PROGRESS html tag with any options.

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

Renders PROGRESS html tag with any options.

HTML::Builder.new.build do
  progress(class: "crystal") { text "crystal is awesome" }
end
# => <progress class="crystal">crystal is awesome</progress>
Source
rp(attrs, &)

Renders RP html tag with any options.

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

Renders RP html tag with any options.

HTML::Builder.new.build do
  rp(class: "crystal") { text "crystal is awesome" }
end
# => <rp class="crystal">crystal is awesome</rp>
Source
rt(attrs, &)

Renders RT html tag with any options.

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

Renders RT html tag with any options.

HTML::Builder.new.build do
  rt(class: "crystal") { text "crystal is awesome" }
end
# => <rt class="crystal">crystal is awesome</rt>
Source
ruby(attrs, &)

Renders RUBY html tag with any options.

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

Renders RUBY html tag with any options.

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

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>
Source
s

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>
Source
script(attrs, &)

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>
Source
script

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>
Source
section(attrs, &)

Renders SECTION html tag with any options.

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

Renders SECTION html tag with any options.

HTML::Builder.new.build do
  section(class: "crystal") { text "crystal is awesome" }
end
# => <section class="crystal">crystal is awesome</section>
Source
select(attrs, &)

Renders SELECT html tag with any options.

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

Renders SELECT html tag with any options.

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

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>
Source
span

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>
Source
strong(attrs, &)

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>
Source
strong

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>
Source
summary(attrs, &)

Renders SUMMARY html tag with any options.

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

Renders SUMMARY html tag with any options.

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

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>
Source
table

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>
Source
tag(name, attrs, &)

Renders the provided html tag with any options.

HTML::Builder.new.build do
  tag("section", {class: "crystal"}) { text "crystal is awesome" }
end
# => <section class="crystal">crystal is awesome</section>
Source
tag(name, **attrs, &)
Source
tbody(attrs, &)

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>
Source
tbody

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>
Source
td(attrs, &)

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>
Source
td

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>
Source
text(text)

Renders escaped text in html tag.

HTML::Builder.new.build { text "crystal is awesome" }
# => crystal is awesome
Source
textarea(attrs, &)

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>
Source
textarea

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>
Source
th(attrs, &)

Renders TH html tag with any options.

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

Renders TH html tag with any options.

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

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>
Source
thead

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>
Source
time(attrs, &)

Renders TIME html tag with any options.

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

Renders TIME html tag with any options.

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

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>
Source
title

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>
Source
tr(attrs, &)

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>
Source
tr

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>
Source
u(attrs, &)

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>
Source
u

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>
Source
ul(attrs, &)

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>
Source
ul

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>
Source
wbr(attrs, &)

Renders WBR html tag with any options.

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

Renders WBR html tag with any options.

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