有偏见的HTML/XML汤格式化工具
项目描述
一个用于格式化HTML、XML以及包含XML片段的文本的工具,方式非常具有偏见。
它满足了主要需求:减少diff HTML/XML的痛苦。
因此,zpretty
按照以下经验规则格式化标记
- 最大化垂直空间/减少行长度
- 属性应一致排序
- 属性排序首先是语义的,然后是字母的
此工具理解TAL语言,并为它提供了一些特定功能。
此工具不是linters!如果您正在寻找linters,安全的选择是Tidy和xmllint。
您可能会遇到解析问题!zpretty
将为您关闭一些已知的自闭合标签,如input
和img
,在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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6ce274007e61eb449a4d07f58d2ec31b07b1aea0bbe1d37e423dc245a16b2293 |
|
MD5 | a4e9afeba74195cafc4dc70981979ddd |
|
BLAKE2b-256 | 23c441b713c4ce58fd86dc8c1cdcf47c262451fa886173d477c63844f6111945 |