Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/crystal-lang/html_builder

DSL for creating HTML
https://github.com/crystal-lang/html_builder

Last synced: 25 days ago
JSON representation

DSL for creating HTML

Awesome Lists containing this project

README

        

# html_builder [![Build Status](https://travis-ci.org/crystal-lang/html_builder.svg)](https://travis-ci.org/crystal-lang/html_builder)

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

## Installation

Add this to your application's `shard.yml`:

```yaml
dependencies:
html_builder:
github: crystal-lang/html_builder
```

## Usage

#### Basic usage
```crystal
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):
```html

crystal is awesome

```

#### Full HTML5 page
```crystal
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** :
```html


Crystal Programming Language



Crystal rocks!



```

#### Custom tags

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

puts html
```

**Output**:
```html

Home

```

#### Safety

HTML::Builder escapes attribute values:
```crystal
html = HTML.build do
a(href: "<>") { }
end

puts html
```

**Output**:
```html

```

And escapes text:
```crystal
html = HTML.build do
a { text "<>" }
end

puts html
```

**Output**:
```html
<>
```
## 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