跳转到主要内容

有偏见的HTML/XML汤格式化工具

项目描述

tests

image

pre-commit.ci status

一个用于格式化HTML、XML以及包含XML片段的文本的工具,方式非常具有偏见。

它满足了主要需求:减少diff HTML/XML的痛苦。

因此,zpretty按照以下经验规则格式化标记

  • 最大化垂直空间/减少行长度
  • 属性应一致排序
  • 属性排序首先是语义的,然后是字母的

此工具理解TAL语言,并为它提供了一些特定功能。

此工具不是linters!如果您正在寻找linters,安全的选择是Tidyxmllint

您可能会遇到解析问题!zpretty将为您关闭一些已知的自闭合标签,如inputimg,在HTML中这些标签允许打开。

zpretty不够聪明,无法正确理解无值属性!正在进行一些工作,但与“正常”属性一起工作效果最佳。

功能缺失/速度慢是已知问题。目前开发重点在于拥有一个可工作的工具。所以它运行足够快:格式化一个约100k的文件不到一秒。新功能正在计划中,并且可以轻松获得巨大的性能提升。不过,zpretty不是格式化大型文件(>1 MB)的选项。

查看待办事项部分了解未来的计划。

源代码和问题跟踪器托管在GitHub

安装

建议的安装方法是使用pip

python3 -m pip install --user zpretty

zpretty的最新版本需要Python3。如果您需要使用Python2.7,请使用zpretty 0.9.x。

用法

基本用法

$ zpretty -h
usage: zpretty [-h] [--encoding ENCODING] [-i] [-v] [-x] [-z] [--check]
               [--include INCLUDE] [--exclude EXCLUDE]
               [--extend-exclude EXTEND_EXCLUDE]
               [paths ...]

positional arguments:
  paths                 The list of files or directory to prettify (defaults to
                        stdin). If a directory is passed, all files and
                        directories matching the regular expression passed to
                        --include will be prettified.

options:
  -h, --help            show this help message and exit
  --encoding ENCODING   The file encoding (defaults to utf8)
  -i, --inplace         Format files in place (overwrite existing file)
  -v, --version         Show zpretty version number
  -x, --xml             Treat the input file(s) as XML
  -z, --zcml            Treat the input file(s) as XML. Follow the ZCML
                        styleguide
  --check               Return code 0 if nothing would be changed, 1 if some
                        files would be reformatted
  --include INCLUDE     A regular expression that matches files and directories
                        that should be included on recursive searches. An empty
                        value means all files are included regardless of the
                        name. Use forward slashes for directories on all
                        platforms (Windows, too). Exclusions are calculated
                        first, inclusions later. [default:
                        \.(html|pt|xml|zcml)$]
  --exclude EXCLUDE     A regular expression that matches files and directories
                        that should be excluded on recursive searches. An empty
                        value means no paths are excluded. Use forward slashes
                        for directories on all platforms (Windows, too).
                        Exclusions are calculated first, inclusions later.
                        [default: /(\.direnv|\.eggs|\.git|\.hg|\.mypy_cache|\.no
                        x|\.tox|\.venv|venv|\.svn|\.ipynb_checkpoints|_build|buc
                        k-out|build|dist|__pypackages__)/]
  --extend-exclude EXTEND_EXCLUDE
                        Like --exclude, but adds additional files and
                        directories on top of the excluded ones. (Useful if you
                        simply want to add to the default)

The default exclude pattern is: `/(\.direnv|\.eggs|\.git|\.hg|\.mypy_cache|\.nox
|\.tox|\.venv|venv|\.svn|\.ipynb_checkpoints|_build|buck-
out|build|dist|__pypackages__)/`

如果没有参数限制文件类型(例如,-x-z,...)zpretty将尝试为您猜测正确的选项。

示例

zpretty hello_world.html

pre-commit支持

zpretty可以用作pre-commit钩子。要做到这一点,请将以下内容添加到您的.pre-commit-config.yaml

- repo: https://github.com/collective/zpretty
  rev: FIXME
  hooks:
    - id: zpretty

VSCode扩展

有一个VSCode扩展使用了zpretty

感谢@erral的工作!

开发

git clone ...
cd zpretty
make

运行测试

make test

更新日志

3.1.0 (2023-06-30)

  • 从最新alpha版本[ale-rt]没有进行更改

3.1.0a2 (2023-05-09)

  • 改进匹配实体的正则表达式(修复了#130)[ale-rt]

3.1.0a1 (2023-05-04)

  • 添加命令行参数以包括/排除文件和文件夹(实现#96)[ale-rt]
  • 在处理tal属性时对XML中不允许的字符具有容忍性(见#125)[ale-rt]

3.0.4 (2023-04-20)

  • 修复属性中的虚假和符号(修复了#116)[ale-rt]

3.0.3 (2023-03-26)

  • 处理在文档类型声明之前有XML前缀的HTML文件(修复了#118)[ale-rt]

3.0.2 (2023-02-26)

  • 正确处理属性中的禁止字符(修复了#110)[ale-rt]
  • 修复属性值包含双引号的属性(修复了#109)[ale-rt]

3.0.1 (2023-02-09)

  • 修复属性内空行的问题(修复了#106)[ale-rt]

3.0.0 (2023-02-09)

  • pre-commit钩子现在修改文件,而不仅仅是检查它们是否应该被修复[ale-rt]
  • 修复传递多个文件时的检查行为[ale-rt]
  • 改进检查HTML文件的功能(修复了#89)[ale-rt]

2.4.1 (2022-10-25)

  • 带有属性之间新行的XML文件格式正确(修复了#84)[ale-rt]
  • 不要像处理页面模板属性那样篡改XML中的属性(修复了#85)[ale-rt]

2.4.0 (2022-10-22)

  • 防止篡改自定义实体声明(修复了#80)[ale-rt]
  • 添加对Python 3.11的支持。[ale-rt]
  • 停止支持Python 3.6。[ale-rt]

2.3.1 (2022-09-30)

  • 不要对CDATAs做任何事情(修复了#76)[ale-rt]

2.3.0 (2022-09-26)

  • 添加-v/--version选项 [ale-rt]

2.3.0a4 (2022-09-24)

  • 移除不再使用的自定义树构建器[ale-rt]
  • 修复XML中的实体替换(修复了#48,参见#71)[ale-rt]

2.3.0a3 (2022-07-08)

  • 不要在脚本和样式标签内部转义实体(修复了#57)[ale-rt]

2.3.0a2 (2022-07-08)

  • 修复发布

2.3.0a1 (2022-07-08)

  • 保留XML文档和pre元素中的空白(修复了#64)[ale-rt]
  • 改进处理文档类型的方式[ale-rt]
  • 不要杀死带文档类型的XML文档(修复了#47)[ale-rt]
  • 支持Python 3.10 [ale-rt]

2.2.0 (2021-12-06)

  • 添加--check命令行参数(修复了#49)[ale-rt]
  • 现在该包与pre-commit兼容(修复了#50)[ale-rt]

2.1.0 (2021-02-12)

  • 移除未使用的autofix方法[ale-rt]
  • 当标签内出现新行时不渲染无用的=""(参见#35)[ale-rt]
  • 属性渲染器现在了解元素的缩进,并且相应地进行缩进[ale-rt]
  • ZCML元素现在有它自己的自定义标签模板,这简化了代码[ale-rt]
  • 跨多行的属性内容不再缩进(参见 #17)[ale-rt]
  • 改进了 zcml 属性的排序(参见 #11)[ale-rt]
  • 代码符合 black 20.8b1 标准 [ale-rt]
  • 切换到 pytest 运行测试 [ale-rt]
  • 升级开发需求 [ale-rt]
  • 支持 Python 3.9 [ale-rt]

2.0.0 (2020-05-28)

  • 更新了自闭合元素和布尔属性列表 [ale-rt]

1.0.3 (2020-05-22)

  • 修复了多余的换行符 (#20)

1.0.2 (2019-11-03)

  • 在 Python3.8 中属性中的引号被转义
  • 再次修复文件和标准输出的输出 [ale-rt]

1.0.1 (2019-10-28)

  • 修复文件的输出 [ale-rt]

1.0.0 (2019-10-27)

  • 仅支持 Python3 [ale-rt]

0.9.3 (2017-05-06)

  • 支持 Python2.7 的最后一个版本
  • 修复文本方法
  • 在文本中保留实体
  • 添加了 --encoding 参数
  • 添加了 --xml 参数以强制进行 xml 解析
  • 如果没有强制指定解析器,则根据给定的文件名选择更好的解析器
  • 如果参数中包含 - 或未传递任何参数,则处理 stdin [ale-rt]

0.9.2 (2017-02-27)

  • 对 zcml 属性的顺序进行了小的修改
  • 自动在格式化后的文件末尾添加新行
  • 自我修复打开的自闭合标签。 [ale-rt]

0.9.1.1 (2017-02-18)

  • 修复了有问题的版本。 [ale-rt]

0.9.1 (2017-02-18)

  • 对 zcml 风格指南的初始支持 (#3)。 [ale-rt]

0.9.0 (2017-02-11)

  • 初始版本。 [ale-rt]

项目详情


下载文件

下载适合您平台文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码发行版

zpretty-3.1.0.tar.gz (36.4 kB 查看哈希值)

上传时间 源代码

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面