Packages

Exeex is an Elixir template engine that provides macro, include and inheritance functions. It allows you to create reusable templates with dynamic content, making it easier to manage and maintain your views in Elixir applications.

Current section

Files

Jump to
exeex README.md
Raw

README.md

# ExEEx
ExEEx is an Elixir template engine with macro and template import and
inheritance capabilities.
# Usage
iex> ExEEx.render_string("foo <%= bar %>", bar: "baz")
"foo baz"
iex> ExEEx.render("template_file.eex", bar: "baz")
"foo baz"
## Include directive
The include directive is used to include another template file.
main.eex:
<%= include "header.eex" %>
Hello world
header.eex:
This is header
The rendering output of main.eex is as follows:
This is header
Hello world
## Block directive
The block directive is used to override part of the included text.
super.eex:
Hello world
<%= block "body" do %>In super<% end %>
sub.eex:
<%= include "super.eex" do %>
<%= block "body" do %>In sub<%= block "subbody" %><% end %>
<% end %>
subsub.eex:
<%= include "sub.eex" do %>
<%= block "subbody" do %>(In subsub)<% end %>
<% end %>
The rendering output of super.eex is as follows:
Hello World
In super
The rendering output of sub.eex is as follows:
Hello World
In sub
The rendering output of subsub.eex is as follows:
Hello World
In sub(In subsub)
## Super directive
The super directive is used to refer to an included template block.
super.eex:
Hello world
<%= block "body" do %>In super<% end %>
sub.eex:
<%= include "super.eex" do %>
<%= block "body" do %><%= super %>(In sub)<% end %>
<% end %>
The rendering output of sub.eex is as follows:
Hello World
In super(In sub)
## Macro directive
The macro directive defines a macro.
<% def @checkbox_input(name, checked, disabled) do %>
<input type="checkbox" name="<%= @name %>" id="id_<%= @name %>" <%= if @checked do %>checked<% end %> <%= if @disabled do %>disabled<% end %>>
<% end %>
Using macros:
<%= @input("checkbox", true, true) %>
## Import macros
Import macros:
<% import "macro_defs.txt" %>
<%= @input("check_box", true, true) %>
or import macros into specified namespace.
<% import "macro_defs.txt", as: view %>
<%= view::@input("check_box", true, true) %>