Current section
Files
Jump to
Current section
Files
lib/hat/compiler.ex
defmodule HAT.Compiler do
@moduledoc """
The compiler for `HAT`.
"""
alias HAT.Compiler.Engine
@doc false
defmacro compile_file(path, opts \\ []) do
source = File.read!(path)
default_opts = [
engine: Engine,
caller: __CALLER__,
file: path,
line: 1,
trim: trim?(),
source: source
]
opts = Keyword.merge(default_opts, opts)
EEx.compile_string(source, opts)
end
@doc false
def compile_string(source, opts \\ []) do
default_opts = [
engine: Engine,
caller: :not_available,
file: "nofile",
line: 1,
indentation: 0,
trim: trim?(),
source: source
]
opts = Keyword.merge(default_opts, opts)
EEx.compile_string(source, opts)
end
@doc false
defdelegate __reserved_assigns__, to: Engine
defp trim?, do: Application.get_env(:hat, :whitespace_trimming, true)
end