11 unstable releases (3 breaking)
0.5.3 | Mar 1, 2024 |
---|---|
0.5.2 | Feb 10, 2024 |
0.5.0 | Sep 13, 2023 |
0.4.0 | Jul 21, 2023 |
0.2.1 | Jan 31, 2021 |
#2186 in Parser implementations
122 downloads per month
Used in ludtwig
605KB
14K
SLoC
Ludtwig-Parser
Rust crate that parses Twig / HTML templating syntax into a lossless syntax tree. It does not conform to the official HTML spec and the input is required to be as idiomatic as possible (but the parser still tries to recover from errors / parse as much as possible). For example missing closing tags in HTML result in a parsing error (even if browsers can interpret the HTML and reconstruct the closing tag). This makes it possible to represent the template in a hierarchical untyped tree which is easy to navigate and contains both Twig and HTML syntax.
Accepted syntax example
{% block my_component %}
{% set isActive = true %}
<div id="my-component"
class="my-component {% if isLarge %}large{% endif %}"
{{ dataAttribute }}="data"
{# Single word attributes don't strictly require quotes #}
data-active={{ isActive }}
>
{% block my_component_inner %}
<span id="my-span"
{% if isActive %}
style="color: red"
{% endif %}
>
hello {{ name }}
</span>
{% endblock %}
</div>
{% endblock %}
Disclaimer
It is developed together with the ludtwig CLI application for formatting and analyzing Twig template files.
License
MIT - see LICENSE file.
License notices
For testing purposes this repository also may include code from the following sources:
Dependencies
~5.5MB
~69K SLoC