57 lines
1.7 KiB
Elixir
57 lines
1.7 KiB
Elixir
defmodule Phoenix.Template.EExEngine do
|
|
@moduledoc """
|
|
The Phoenix engine that handles the `.eex` extension.
|
|
"""
|
|
|
|
@behaviour Phoenix.Template.Engine
|
|
|
|
def compile(path, _name) do
|
|
EEx.compile_file(path, [line: 1] ++ options_for(path))
|
|
end
|
|
|
|
defp options_for(path) do
|
|
format =
|
|
case path |> Path.rootname() |> Path.extname() do
|
|
"." <> format ->
|
|
format
|
|
|
|
_ ->
|
|
raise ArgumentError,
|
|
"template paths in Phoenix require the format extension, got: #{path}"
|
|
end
|
|
|
|
case Phoenix.Template.format_encoder(format) do
|
|
Phoenix.HTML.Engine ->
|
|
unless Code.ensure_loaded?(Phoenix.HTML.Engine) do
|
|
raise "could not load Phoenix.HTML.Engine to use with .html.eex templates. " <>
|
|
"You can configure your own format encoder for HTML but we recommend " <>
|
|
"adding phoenix_html as a dependency as it provides XSS protection."
|
|
end
|
|
|
|
trim =
|
|
case Application.get_env(:phoenix_template, :trim_on_html_eex_engine) do
|
|
nil ->
|
|
case Application.get_env(:phoenix_view, :trim_on_html_eex_engine) do
|
|
nil ->
|
|
Application.get_env(:phoenix, :trim_on_html_eex_engine, true)
|
|
|
|
boolean ->
|
|
IO.warn(
|
|
"config :phoenix_view, :trim_on_html_eex_engine is deprecated, please use config :phoenix_template, :trim_on_html_eex_engine instead"
|
|
)
|
|
|
|
boolean
|
|
end
|
|
|
|
boolean ->
|
|
boolean
|
|
end
|
|
|
|
[engine: Phoenix.HTML.Engine, trim: trim]
|
|
|
|
_ ->
|
|
[engine: EEx.SmartEngine]
|
|
end
|
|
end
|
|
end
|