Simplates for Elixir

Build StatusCoverage Status

Simplates are a file format for server-side web programming. Used currently in Infuse.

This repository is my future spec for simplates.org

Why Simplates?

Mixing code into templates leads to unmaintainable spaghetti. On the other hand, putting closely-related templates and code in completely separate subdirectories makes it painful to switch back and forth.

Simplates improve web development by bringing code and templates as close together as possible, without mixing them.

What does a Simplate look like?

Here's an example:

<script>
  program = "hellö"
  excitement = :rand.uniform(100)
</script>

<template type="text/html" via="EEx">
  <h1><%= hello %>, program, my favorite number is <%= num %></h1>
</template>

Installation

  1. Add simplates to your list of dependencies in mix.exs:
```elixir
def deps do
  [{:simplates, "~> 0.4.0"}]
end
```
  1. Ensure simplates is started before your application:
```elixir
def application do
  [applications: [:simplates]]
end
```
  1. Create & render like so
```elixir
page = Simplates.Simplate.create_from_string("<template>\nHello\n</template>")

{output, _} = Simplates.Simplate.render(page, "text/plain")
```