Syntax: Code

Unbuffered code

Unbuffered code starts with - does not add any output directly.

- name = assigns.name
div(id="name-#{name}")

Bufferred code

Buffered code starts with = and outputs the result of evaluating the Elixir expression in the template. For security, it is first HTML escaped.

p= "Hello, #{name}"

Unescaped code

Buffered code may be unescaped by using !=. This skips the HTML escaping.

div!= markdown_to_html(@article.body) |> sanitize()

Conditionals and Loops

For if, cond, try, for, an end statement is automatically inferred.

= if assigns.name do
  = "Hello, #{@name}"

They also need to begin with =, not -. Except for else, rescue and so on.

= if assigns.current_user do
  | Welcome.
- else
  | You are not signed in.

Multiline

If a line ends in one of these characters: , ( { [, the next line is considered to be part of the Elixir expression.

= render App.PageView,
  "index.html",
  conn: @conn