• Stars
    star
    67
  • Rank 462,689 (Top 10 %)
  • Language
    Crystal
  • License
    MIT License
  • Created almost 9 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

DSL for creating HTML

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

<a href="http://crystal-lang.org">
  crystal is awesome
</a>

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 :

<!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>

Custom tags

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

puts html

Output:

<v-button to="home">
  Home
</v-button>

Safety

HTML::Builder escapes attribute values:

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

puts html

Output:

<a href="&lt;&gt;"></a>

And escapes text:

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

puts html

Output:

<a>&lt;&gt;</a>

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

More Repositories

1

crystal

The Crystal Programming Language
Crystal
19,438
star
2

shards

Dependency manager for the Crystal language
Crystal
764
star
3

crystal-book

Crystal reference with language specification, manuals and learning materials
Makefile
395
star
4

crystal-db

Common db api for crystal
Crystal
303
star
5

crystal-sqlite3

SQLite3 bindings for Crystal
Crystal
139
star
6

crystal_lib

Automatic binding generator for native libraries in Crystal
Crystal
138
star
7

heroku-buildpack-crystal

Heroku buildpack for Crystal
Shell
123
star
8

crystal-mysql

MySQL connector for Crystal
Crystal
107
star
9

install-crystal

GitHub Action: Install Crystal programming language
JavaScript
67
star
10

crystal-website

crystal-lang.org website
SCSS
61
star
11

clang.cr

libclang bindings for crystal (including automatic C bindings generator)
Crystal
47
star
12

distribution-scripts

Shell
40
star
13

crystal-presents

Playground for creating crystal presentations with live coding
JavaScript
40
star
14

crystal-molinillo

A generic dependency resolution algorithm. Ported from https://github.com/CocoaPods/Molinillo/
Crystal
30
star
15

perf-tools

An assortment of tools to track resources in Crystal applications
Crystal
26
star
16

omnibus-crystal

Omnibus builder for Crystal
Ruby
25
star
17

bootstrap-script

Automated script to bootstrap the crystal compiler from source
Shell
22
star
18

crystal-readline

Crystal bindings to GNU Readline Library
Crystal
21
star
19

json_mapping.cr

Crystal
18
star
20

rfcs

RFCs repository for Crystal
18
star
21

crystal-env

Crystal
13
star
22

homebrew-crystal

Homebrew Tap for Crystal development
Ruby
13
star
23

logger.cr

Crystal
12
star
24

crystal-dist

Docker workspace to sign and release Crystal binaries to repositories
Shell
7
star
25

yaml_mapping.cr

Crystal
7
star
26

test-ecosystem

Shell
7
star
27

crystal-infrastructure

Infrastructure automation for Crystal related resources
Jinja
3
star
28

crystal-random

Crystal
3
star
29

crystal-intro

Talk that introduces the Crystal programming language
JavaScript
2
star
30

osc-docker

Dockerfile for pushing to Open Build Service
Dockerfile
1
star
31

.github

Default community health files
1
star