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.

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.