Liquidz
High-performance Liquid template engine for Elixir, powered by Zig.
Installation
Add liquidz to your list of dependencies in mix.exs:
def deps do
[
{:liquidz, "~> 0.2.0"}
]
endPrerequisites: You need to build the Zig library first:
cd ../.. # Go to project root
zig build -Doptimize=ReleaseFastUsage
# Simple variable substitution
{:ok, result} = Liquidz.render("Hello, {{ name }}!", %{name: "World"})
# => "Hello, World!"
# Using the bang version (raises on error)
result = Liquidz.render!("Hello, {{ name }}!", %{name: "World"})
# => "Hello, World!"
# With loops
result = Liquidz.render!("{% for item in items %}{{ item }} {% endfor %}", %{items: ["a", "b", "c"]})
# => "a b c "
# With conditionals
result = Liquidz.render!("{% if show %}visible{% endif %}", %{show: true})
# => "visible"
# With filters
result = Liquidz.render!("{{ name | upcase }}", %{name: "hello"})
# => "HELLO"
# Using keyword lists
result = Liquidz.render!("{{ name }}", name: "World")
# => "World"
# Using JSON string directly
result = Liquidz.render!("{{ x }}", ~s({"x": 42}))
# => "42"API
Liquidz.render(template, data \\ %{})
Renders a Liquid template with the given data. Returns {:ok, result} or {:error, reason}.
Liquidz.render!(template, data \\ %{})
Same as render/2 but raises on error.
Liquidz.render_string/2 and Liquidz.render_string!/2
Aliases for render/2 and render!/2.
Running Tests
mix deps.get
mix testLicense
MIT