2.0.3 • Published 10 months ago

espresso_templatizer v2.0.3

Weekly downloads
-
License
MIT
Repository
-
Last release
10 months ago

espresso_templatizer

Package that turns ghp formatted files into gleam code that can render in espresso.

Quick start

npm install -g espresso_templatizer
# Watches **/*.ghp
espresso_templatizer watch
# Watches a specific path
espresso_templatizer watch --files="templates/**/*.ghp"
# Converts a specific file once
espresso_templatizer convert src/my_file.ghp

Template Format

HTML

HTML blocks are denoted by >-> and <-<

For example:

import espresso/html

pub fn render() {
  >->
  <body>
    <h1 class="text-4xl text-white" id="header">This is a header</h1>
    <p>Our content goes here</p>
  </body>
  <-<
}

Gets turned into

import espresso/html

pub fn render() {
  html.t("body")
  |> html.c([
    html.t("h1")
    |> html.a("class", "text-4xl text-white")
    |> html.a("id", "header")
    |> html.c([html.txt("This is a header")]),
  ])
  |> html.c([
    html.t("p")
    |> html.c([html.txt("Our content goes here")]),
  ])
}

If you are inside an html block and want to go back to gleam you can use brackets to escape.

This will render the variable "things" into the p resulting in "Some things go here"

import espresso/html

pub fn render() {
  let things = "Some things "
  >->
  <body>
    <h1 class="text-4xl text-white" id="header">This is a header</h1>

    <p>{things} go here</p>
  </body>
  <-<
}

The html functions are designed to be passed to espresso's render function and sent as a response.

import espresso/router.{Router, get, to_routes}
import espresso/request.{Request}
import espresso/response.{render}
import espresso/html.{a, c, t, txt}
import espresso

let body =
  html.t("body")
  |> html.c([
    html.t("h1")
    |> html.a("class", "text-4xl text-white")
    |> html.a("id", "header")
    |> html.c([html.txt("This is a header")]),
  ])
  |> html.c([
    html.t("p")
    |> html.c([html.txt("Our content goes here")]),
  ])

let router =
  router.new()
  |> get("/", fn(_req: Request(BitString, assigns, session)) { render(body) })

espresso.start(router)

Local development

  • npm install to install dependencies
  • gleam run --target=javascript <commands> to run the CLI
  • gleam test --target=javascript to run tests
2.0.3

10 months ago

2.0.2

10 months ago

2.0.1

10 months ago

1.4.0

10 months ago

1.3.0

10 months ago

1.2.0

10 months ago

1.1.1

10 months ago

1.1.0

10 months ago

1.0.2

10 months ago

1.0.1

10 months ago

1.0.0

10 months ago