View Source Temple (Temple v0.14.0)
Temple syntax is available inside the temple
, and is compiled into efficient Elixir code at compile time using the configured EEx.Engine
.
You should checkout the guides for a more in depth explanation.
Usage
defmodule MyApp.HomePage do
import Temple
def render() do
assigns = %{title: "My Site | Sign Up", logged_in: false}
temple do
"<!DOCTYPE html>"
html do
head do
meta charset: "utf-8"
meta http_equiv: "X-UA-Compatible", content: "IE=edge"
meta name: "viewport", content: "width=device-width, initial-scale=1.0"
link rel: "stylesheet", href: "/css/app.css"
title do: @title
end
body do
header class: "header" do
ul do
li do
a href: "/", do: "Home"
end
li do
if @logged_in do
a href: "/logout", do: "Logout"
else
a href: "/login", do: "Login"
end
end
end
end
main do
"Hi! Welcome to my website."
end
end
end
end
end
end
Configuration
Engine
By default Temple wil use the EEx.SmartEngine
, but you can configure it to use any other engine. Examples could be Phoenix.HTML.Engine
or Phoenix.LiveView.Engine
.
config :temple, engine: Phoenix.HTML.Engine
Aliases
You can add an alias for an element if there is a namespace collision with a function. If you are using Phoenix.HTML
, there will be namespace collisions with the <link>
and <label>
elements.
config :temple, :aliases,
label: :label_tag,
link: :link_tag,
select: :select_tag
temple do
label_tag do
"Email"
end
link_tag href: "/css/site.css"
end
This will result in:
<label>
Email
</label>
<link href="/css/site.css">
Summary
Functions
Compiles runtime attributes.
To use this function, you set it in application config.
By default, Temple uses {Phoenix.HTML, :attributes_escape}
. This is useful if you want to use EEx.SmartEngine
.
config :temple,
engine: EEx.SmartEngine,
attributes: {Temple, :attributes}
Note
This function does not do any HTML escaping
Note
This function is used by the compiler and shouldn't need to be used directly.