跳转到主要内容

紧凑的文本块编辑DST

项目描述

Built Status ReadTheDocs Coveralls PyPI-Server Project generated with PyScaffold

texted

紧凑的 领域特定语言 (DSL) 用于编辑文本块

texted 是一种面向文本编辑操作的行导向 DSL,操作独立的文本块(例如注释/取消注释行)。

它不适合复杂更改。如果您需要这些功能,请考虑使用语法感知库,例如用于 .ini/.cfg 文件的 configupdater,用于 .tomltomlkit,用于 Python 文件的 libCSTrefactor

安装

您可以使用 pip 安装 texted

$ pip install texted

完成此操作后,您将能够在您的 Python 脚本中使用 texted

快速入门

使用 texted 涉及以下工作流程

  1. 选择给定文本的相关行。

  2. 对选择执行编辑操作。

以下示例展示了此工作流程

>>> from texted import edit, find, until, contains, startswith, blank, remove_prefix
>>> example = """\
... # [testenv:typecheck]
... # deps = mypy
... # commands = python -m mypy {posargs:src}
... [testenv:docs]
... deps = sphinx
... changedir = docs
... commands = python -m sphinx -W --keep-going . {toxinidir}/build/html
... """
>>> new_text = edit(
...    example,
...    find(contains("[testenv:typecheck]")) >> until(startswith("[testenv") | blank),
...    remove_prefix("# "),
... )
>>> print(new_text)
[testenv:typecheck]
deps = mypy
commands = python -m mypy {posargs:src}
[testenv:docs]
deps = sphinx
changedir = docs
commands = python -m sphinx -W --keep-going . {toxinidir}/build/html

最基本的几种选择操作之一可以通过 find 来创建。这个操作将选择符合特定条件的第一行。例如

find(lambda line: "[testenv:typecheck]" in line)

… 将选择包含 "[testenv:typecheck]" 字符串的文本的第一行。然后我们可以通过 扩展 (>>) 来选择所有非空连续行。

find(lambda line: "[testenv:typecheck]" in line) >> whilist(bool)
# => bool is handy! bool("") == False, bool("not empty") == True

在选择了这些行之后,可以应用编辑操作。例如

add_prefix("# ")  # => equivalent to: replace(lambda line: "# " + line)

… 将在选择的非空行前添加前缀 "# "

请注意,所有这些功能都是懒加载的,直到使用 edit 调用它们时才会执行。

注意

该项目使用 PyScaffold 4.4 设置。有关 PyScaffold 的详细信息和使用信息,请参阅 https://pyscaffold.org/

项目详情


下载文件

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

源分发

texted-0b1.tar.gz (31.5 kB 查看哈希值)

上传时间

构建分发

texted-0b1-py3-none-any.whl (13.6 kB 查看哈希值)

上传时间 Python 3

支持者

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