跳转到主要内容

用于处理文本文件的pre-commit修复器和linters

项目描述

texthooks

处理文本文件的pre-commit钩子集合。

特别针对可能对仓库不利的Unicode字符的处理钩子。

与pre-commit一起使用

要使用pre-commit,请将此存储库和所需的钩子包含在.pre-commit-config.yaml

- repo: https://github.com/sirosen/texthooks
  rev: 0.6.7
  hooks:
    - id: alphabetize-codeowners
    - id: fix-smartquotes
    - id: fix-ligatures

独立使用

每个钩子都可以作为CLI脚本使用。只需

pip install texthooks

然后调用,例如。

fix-smartquotes FILENAME

钩子摘要

钩子 描述
alphabetize-codeowners 按字母顺序排列CODEOWNERS文件中的名称。
fix-smartquotes 将花括号引号替换为ASCII引号。
fix-spaces 将特殊空格标记规范化为ASCII空格。
fix-ligatures 将样式连字符转换为ASCII文本。
forbid-bidi-controls 检查双向文本。
macro-expand 一种简单的方式来编写文本格式化宏。

支持的钩子

alphabetize-codeowners

通过字母顺序排列始终按相同顺序列出人员和团队以规范化CODEOWNERS文件。

默认钩子针对CODEOWNERS.github/CODEOWNERSdocs/CODEOWNERS

按所有者排序,而不是按行排序

alphabetize-codeowners按路径对所有者的列表进行字母排序。它不会对文件中的行进行字母排序或以其他方式进行排序。

忽略注释和空行

钩子应保留所有注释行或空行不变。

规范化空白字符

在修改的行上,钩子将规范化行以具有没有前导空白,并且使用单个空格字符分隔所有者名称。

fix-smartquotes

这个修复了从某些应用程序复制粘贴时将双引号替换为花括号的问题。它不会转换尖括号、盲文引号或角引号。这些字符通常不是复制粘贴错误的产物,因此它们是允许的。

低引号在语言的使用和意义上有所不同,有些语言使用“向外”面对的引号(与英语相反)。在大多数情况下,这些和异国情调字符(双重引号)被忽略。

在包含这些标记的文件中,它们将被替换,并且运行将被标记为失败。

覆盖引号字符

有两种选项可用于指定确切要替换哪些字符。为了方便使用,它们被指定为十六进制编码的Unicode代码点。

假设你想避免替换“重单引号引号装饰”(275C)和“重单转引号引号装饰”(275B)字符。你可以这样覆盖单引号代码点

- repo: https://github.com/sirosen/texthooks
  rev: 0.6.7
  hooks:
    - id: fix-smartquotes
      # replace default single quote chars with this set:
      # apostrophe, fullwidth apostrophe, left single quote, single high
      # reversed-9 quote, right single quote
      args: ["--single-quote-codepoints", "0027,FF07,2018,201B,2019"]

fix-spaces

将各种Unicode空格字符替换为" "

这会将不间断空格和类似字符规范化,以确保你的文件在所有环境中以相同的方式渲染。它不会修改换行符、回车符或其他不属于空格分隔符类别的空白字符。

覆盖空格字符

有一个选项可用于指定确切要替换哪些字符。为了方便使用,它们被指定为十六进制编码的Unicode代码点。

假设你想替换细空格(代码点 2009)。你可以这样覆盖空格代码点

- repo: https://github.com/sirosen/texthooks
  rev: 0.6.7
  hooks:
    - id: fix-spaces
      args: ["--separator-codepoints", "2009"]

fix-ligatures

自动查找并替换连字符字符与其ASCII等效字符。

这会将可能由LaTeX等程序创建的连字符替换为其严格等价的ASCII等效字符。例如,fiff可能被连字符化。

此钩子将这些字符转换回ASCII,以便像grep这样的工具按预期运行。

forbid-bidi-controls

这是一个禁止使用Unicode双向文本控制字符的检查器。

这些是方向格式化字符,可以用来构造具有意外或不清晰语义的文本。例如,在允许在语句中使用双向文本的编程语言中,"X" = ייִדיש可以写成从右到左反转,表示变量ייִדיש被赋予了值"X"

macro-expand

替换文本中的简单“宏”字符串。如果没有提供宏参数,则此修复器为无操作。将--macro添加到参数中执行替换。

例如,使用以下示例配置将issue:NNN转换为Markdown中的问题链接

- repo: https://github.com/sirosen/texthooks
  rev: 0.6.7
  hooks:
    - id: macro-expand
      args:
        - "--macro"
        - "issue:"
        - '[texthooks#$VALUE](https://github.com/sirosen/texthooks/issues/$VALUE)'

CHANGELOG

未发布

0.6.7

  • 当通过--dialect=gitlab传递时,支持GitLab的section标题在alphabetize-codeowners中。
  • 对代码所有者名称进行Casefold以进行更好的Unicode排序。感谢@adam-moss的PR!

0.6.6

  • alphabetize-codeowners中处理空行时的错误修复

0.6.5

  • alphabetize-codeowners现在不区分大小写,并更好地规范化空白。感谢@kurtmckee的PR!

0.6.4

  • alphabetize-codeowners添加对Gitea和GitLab CODEOWNERS文件的支持。感谢@adam-moss的PR!

0.6.3

  • 缩短pre-commit.com要求的钩子名称长度

0.6.2

  • alphabetize-codeowners的轻微空白错误修复

0.6.1

  • 修复alphabetize-codeowners去除结尾换行的错误

0.6.0

0.5.0

  • 修复在Windows上运行修复器时可能由于错误的编码而导致数据写入错误的错误
  • 添加-v/--verbose-q/--quiet标志以调整输出详细程度

0.4.0

  • 添加fix-spaces修复器

0.3.1

  • 对docstrings进行轻微修复

0.3.0

  • 添加宏展开修复器

0.2.2

  • 修复所有钩子CLI参数处理中的错误

0.2.1

  • 修复forbid-bidi-controls入口点的错误

0.2.0

  • 添加forbid-bidi-controls钩子
  • 调整文件编码的处理。在大多数情况下,默认情况下将使用UTF-8编码读取文件。

0.1.0

  • 初始版本,包含 fix-ligaturesfix-smartquotes 钩子

项目详情


下载文件

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

源代码发行版

texthooks-0.6.7.tar.gz (14.5 kB 查看哈希值)

上传时间 源代码

构建发行版

texthooks-0.6.7-py3-none-any.whl (16.0 kB 查看哈希值)

上传时间 Python 3

支持者