12 releases
new 0.6.0 | Nov 8, 2024 |
---|---|
0.5.3 | Mar 1, 2024 |
0.5.2 | Feb 10, 2024 |
0.5.0 | Sep 13, 2023 |
0.2.1 | Jan 31, 2021 |
#2240 in Parser implementations
126 downloads per month
Used in ludtwig
635KB
15K
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
~68K SLoC