Engine documentation
This commit is contained in:
parent
1cb522d440
commit
ee6674f8ca
1 changed files with 59 additions and 0 deletions
|
@ -1,6 +1,65 @@
|
|||
defmodule Dsl.Engine do
|
||||
@behaviour Phoenix.Template.Engine
|
||||
|
||||
@moduledoc """
|
||||
Dsl provides a templating engine for use in Phoenix web applications.
|
||||
|
||||
You can configure your application to use Dsl templates by adding the following configuration.
|
||||
|
||||
```elixir
|
||||
# config.exs
|
||||
config :phoenix, :template_engines, exs: Dsl.Engine
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Dsl templates use the `.exs` extension, because they are written with pure Elixir!
|
||||
|
||||
`assigns` (@conn, etc) are handled the same as normal `Phoenix.HTML.Engine` templates.
|
||||
|
||||
Note: The `Dsl.htm/1` macro is _not_ needed for Dsl templates due to the engine taking care of that for you.
|
||||
|
||||
```
|
||||
# app.html.exs
|
||||
html lang: "en" 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"
|
||||
title "YourApp · Phoenix Framework"
|
||||
|
||||
link rel: "stylesheet", href: Routes.static_path(@conn, "/css/app.css")
|
||||
end
|
||||
|
||||
body do
|
||||
header do
|
||||
section class: "container" do
|
||||
nav role: "navigation" do
|
||||
ul do
|
||||
li do: a("Get Started", href: "https://hexdocs.pm/phoenix/overview.html")
|
||||
end
|
||||
end
|
||||
|
||||
a href: "http://phoenixframework.org/", class: "phx-logo" do
|
||||
img src: Routes.static_path(@conn, "/images/phoenix.png"),
|
||||
alt: "Phoenix Framework Logo"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
main role: "main", class: "container" do
|
||||
p get_flash(@conn, :info), class: "alert alert-info", role: "alert"
|
||||
p get_flash(@conn, :error), class: "alert alert-danger", role: "alert"
|
||||
|
||||
partial render(@view_module, @view_template, assigns)
|
||||
end
|
||||
|
||||
script type: "text/javascript", src: Routes.static_path(@conn, "/js/app.js")
|
||||
end
|
||||
end
|
||||
```
|
||||
"""
|
||||
|
||||
def compile(path, _name) do
|
||||
template =
|
||||
path
|
||||
|
|
Reference in a new issue