紧凑的文本块编辑DST
项目描述
texted
紧凑的 领域特定语言 (DSL) 用于编辑文本块
texted 是一种面向文本编辑操作的行导向 DSL,操作独立的文本块(例如注释/取消注释行)。
它不适合复杂更改。如果您需要这些功能,请考虑使用语法感知库,例如用于 .ini/.cfg 文件的 configupdater,用于 .toml 的 tomlkit,用于 Python 文件的 libCST 或 refactor。
安装
您可以使用 pip 安装 texted
$ pip install texted
完成此操作后,您将能够在您的 Python 脚本中使用 texted
快速入门
使用 texted 涉及以下工作流程
选择给定文本的相关行。
对选择执行编辑操作。
以下示例展示了此工作流程
>>> 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 查看哈希值)
关闭
texted-0b1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e31cad8bf8660fc536e10ba26404740c3d29b8d32c7e4cfade3790a0e5404916 |
|
MD5 | 7552b2333e68f6673febfd5eb81aa727 |
|
BLAKE2b-256 | 371d35e2800b0110df8cf408bc836124a65c149f4858b0e4bebd0f623e2a77c3 |
关闭
texted-0b1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3baec2e8be1abb125b731e1a098d4f9f8faae2198ffc36e55e8b2677ae739c3d |
|
MD5 | d1cab1e0d54f50780fcd1b75b2f5c16a |
|
BLAKE2b-256 | cc2a3955c8d9a2e8a9851fd5123f4b7bb35e8b001166ed84a29fb70dd650a647 |