#template #html #formatter #twig #analyzer #syntax-tree #error-message

app ludtwig

尊重HTML和您时间的Twig模板文件的代码检查器和格式化工具

13个不稳定版本 (6个破坏性更新)

0.8.3 2024年3月1日
0.8.0 2023年9月13日
0.7.0 2023年7月21日
0.6.1 2021年5月23日
0.5.1 2021年2月18日

#1858 in 开发工具

Download history 15/week @ 2024-04-13 21/week @ 2024-04-20 3/week @ 2024-04-27 14/week @ 2024-05-18 1/week @ 2024-05-25 5/week @ 2024-06-01 7/week @ 2024-06-08 8/week @ 2024-06-15 4/week @ 2024-06-22 4/week @ 2024-06-29 6/week @ 2024-07-06 75/week @ 2024-07-27

81次每月下载

MIT 许可证

745KB
18K SLoC

卢迪格

GitHub GitHub Actions Workflow Status

GitHub release (latest by date including pre-releases) Crates.io Docker Image Version (latest semver)

GitHub all releases Crates.io Docker Pulls

尊重HTML和您时间的Twig模板文件的代码检查器和格式化工具。

特性

  • 快速
    • 用Rust编写
    • 可并发处理文件
  • 实用
    • 大部分时间提供丰富的错误信息和建议
  • 基于规则
    • 规则可以注释语法并提供建议
    • 建议可以使用 --fix 自动应用
  • 可配置
    • 规则可以在整个文件或下一行(忽略整个下一SyntaxNode)中被忽略
    • .ludtwig-ignore 来完全忽略文件(就像您的 .gitignore
    • ludtwig-config.toml (使用 -C 创建一个)来配置项目的规则/调整代码风格
    • 环境变量可以覆盖配置值
  • 解析器不符合HTML规范,但
    • 几乎支持所有Twig语法
    • 所有输入都被解析为语法树
    • 即使无效语法也不会停止解析,它尝试解析尽可能多的有效语法

当前限制

  • Twig语法尚未完全支持
    • {%- ... -%} 空白删除花括号尚未支持
    • 当前不支持将PHP闭包用作函数参数
  • 您可能会遇到其他导致解析错误的边缘情况。请为它们创建问题。
  • 规则列表仍然相当小,因此除了语法之外,还有许多其他事物没有进行检查/建议

安装

货物(Rust工具链)

运行以下cargo命令来安装或更新ludtwig: cargo install ludtwig
您可以从这里安装cargo。如果您不想安装Rust工具链/cargo,您仍然可以使用下面的其他方法。

手动

下载适用于您操作系统的最新发布二进制文件,并将其放入您的PATH中以便于访问。

Docker

查看Docker镜像,或使用以下命令在当前工作目录中进行lint检查: docker run --rm -v $(pwd):/ludtwig maltejanz/ludtwig:latest ludtwig .

Nix / DevEnv

您还可以使用nix包

如何使用Ludtwig?

安装后,请查看ludtwig --help以获取更多信息。它应该很容易理解。如果您想自定义ludtwig分析文件的方式,请查看默认配置文件。要在当前工作目录中创建它,请运行ludtwig -C

允许的语法

为了防止通过Twig创建无效的/脏的HTML,ludtwig只允许在特定位置使用Twig语法。没有这种限制,就不可能解析单个分层语法树中的组合语法。查看以下示例以了解允许Twig语法的一般位置

{% 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 %}

许可协议

版权(c)2024 Malte Janz
ludtwig根据MIT许可协议分发。
有关详细信息,请参阅LICENSE文件。

出于测试目的,此存储库还包括以下来源的代码(不包括在分发的二进制文件中)

依赖关系

~9–20MB
~214K SLoC