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

https://github.com/millironx/kelpie.jl

:dog2: I accidentally built an HTML templating engine in Julia
https://github.com/millironx/kelpie.jl

html julia template-engine

Last synced: 4 months ago
JSON representation

:dog2: I accidentally built an HTML templating engine in Julia

Awesome Lists containing this project

README

          

# Kelpie

[![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://MillironX.github.io/Kelpie.jl/stable)
[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://MillironX.github.io/Kelpie.jl/dev)
[![Build Status](https://github.com/MillironX/Kelpie.jl/actions/workflows/CI.yml/badge.svg?branch=master)](https://github.com/MillironX/Kelpie.jl/actions/workflows/CI.yml?query=branch%3Amaster)
[![Coverage](https://codecov.io/gh/MillironX/Kelpie.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/MillironX/Kelpie.jl)
[![Code Style: Blue](https://img.shields.io/badge/code%20style-blue-4495d1.svg)](https://github.com/invenia/BlueStyle)
[![PkgEval](https://JuliaCI.github.io/NanosoldierReports/pkgeval_badges/K/Kelpie.svg)](https://JuliaCI.github.io/NanosoldierReports/pkgeval_badges/report.html)
[![Genie Downloads](https://shields.io/endpoint?url=https://pkgs.genieframework.com/api/v1/badge/Kelpie)](https://pkgs.genieframework.com?packages=Kelpie)

:dog2: I accidentally built an HTML templating engine in Julia. It looked a lot
like [Pug](https://pugjs.org), but I like working dogs better, so I named it
Kelpie.

## Installation

You can install straight from the [Julia REPL]. Press `]` to enter [pkg mode],
then:

```julia
add Kelpie
```

## Usage

Most HTML elements[^1] now have functions of the same name: simply pass the contents
as a positional argument, and attributes as keyword arguments, and everything
will be returned as an [EzXML](https://github.com/JuliaIO/EzXML.jl) Document or
Node.

```julia
import EzXML: prettyprint

doc = html(
head(
title("Kelpie.jl is awesome!"),
),
body(
header(
h1("Dogs are cool"),
h2("Julia is cool"),
),
main(
img(;
src="/kelpie-on-sheep-back.jpg",
alt="A Kelpie herding sheep"
),
[
p("Kelpies make great herding dogs for $animal.")
for animal in ["cows", "sheep", "chickens"]
]...,
),
),
)

prettyprint(doc)
```

Turns into

```html


Kelpie.jl is awesome!



Dogs are cool


Julia is cool




A Kelpie herding sheep

Kelpies make great herding dogs for cows.


Kelpies make great herding dogs for sheep.


Kelpies make great herding dogs for chickens.



```

Everything is pure Julia, so your imagination is the limit!

[^1]:
Exception: `div` is the division function, and I wanted to leave it that
way. To make `

`s, you need to use `html_div`.

[julia repl]: https://docs.julialang.org/en/v1/manual/getting-started/
[pkg mode]: https://docs.julialang.org/en/v1/stdlib/Pkg/