Temple (Temple v0.14.1)
View SourceTemple 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
endConfiguration
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.EngineAliases
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"
endThis 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.