Library Providing HTML tag macros for Elixir
defmodule Example do
use Xain
markup do
div ("#my-id.my-class") do
span ".bold Testing"
end
end
end
Will render the following:
<div id="my-id" class="my-class"><span class="bold">Testing</span></div>
Additional tag attributes can be included in the html tag by passing in key-value pairs.
markup do
script src: "http://www.someexamplesite.com/example.js", type: "text/javascript"
end
Will render:
<script src="http://www.someexamplesite.com/example.js" type="text/javascript"></script>
Or, with content:
markup do
a "ExampleSite", [name: "example", href: "http://www.someexamplesite.com/"]
end
Will Render:
<a name="example" href="http://www.someexamplesite.com/">ExampleSite</a>
i.e. Phoenix raw
Add the following to your project's config file
config :xain, :after_callback, {Phoenix.HTML, :raw}
Will render the above as:
{safe, "<div id=\"my-id\" class=\"my-class\"><span class=\"bold\">Testing</span></div>"}
To have return markup attributes use single quotes instead of the default double, add the following to your project's config file.
config :xain, :quote, "'"
Will render the above as:
<div id='my-id' class='my-class'><span class='bold'>Testing</span></div>
This work was inspired by Chris McCord's book "Metaprogramming Elixir", and by the ruby project "Arbre"
xain is Copyright (c) 2015-2016 E-MetroTel