Obsidian 插件:Apply Patterns
插件名片
概述
对文本进行按顺序应用自定义查找和替换模式。
原文出处
下面自述文件的来源于 Readme
Readme(翻译)
下面是 obsidian-apply-patterns 插件的自述翻译
Obsidian 应用模式插件
在中对文本应用一系列正则表达式查找/替换规则。
该插件允许创建一系列查找和替换的“规则”,并从可搜索的菜单中将它们应用于文档的选择部分或整行。
支持创建自然语言日期的搜索和替换模式,包括日期范围。
请在此处提交错误:https://github.com/jglev/obsidian-apply-patterns-plugin
请在此处提交想法:https://github.com/jglev/obsidian-apply-patterns-plugin/discussions/categories/ideas
请在此处寻求帮助:https://github.com/jglev/obsidian-apply-patterns-plugin/discussions/categories/q-a
有关每个版本的更改,请查看发布页面:https://github.com/jglev/obsidian-apply-patterns-plugin/releases
截图
- 主题是 Solarized Light。
- 该主题已经通过使用 此CSS片段 进行了增强,用于任务管理。有关在 Obsidian 中添加 CSS 片段的说明,请参见 此处。
已定义了两个“模式”,每个模式都有一个“规则”。可以通过将此 JSON 复制到剪贴板中,并在 Obsidian 中的插件设置选项卡中单击“从剪贴板导入”按钮来将这些设置导入到插件中:
[
{
"name": "将打开的任务标记为完成",
"done": false,
"rules": [
{
"from": "- \\[ \\] #(?:TODO|SCHEDULED)(.*?)\\(Due by \\[\\[(\\d{4}-\\d{2}-\\d{2})\\]\\]\\)",
"to": "- [X] #DONE$1(Completed on [[{{date:today}}]])",
"caseInsensitive": true,
"global": false,
"sticky": false,
"multiline": false,
"disabled": false
}
]
},
{
"name": "重新安排已关闭的任务",
"done": false,
"rules": [
{
"from": "- \\[[Xx]\\] #DONE(.*?)\\(Completed on (.*?)\\)",
"to": "- [ ] #TODO$1(Due by [[{{date:two weeks from today}}]])",
"caseInsensitive": false,
"global": false,
"multiline": false,
"sticky": false
}
]
}
]
第一个模式“将打开的任务标记为完成”将影响具有打开复选框和 #TODO
或 #SCHEDULED
标签以及带有日期的短语“(Due by…)”的行。它将使用一个关闭的复选框、一个 #DONE
标签、行的原始内容和今天的日期来替换匹配项。
第二个模式“重新安排已关闭的任务”将影响具有关闭复选框(-[x]
)和 #DONE
标签以及短语“(Completed on…)”的行。它将使用一个打开的复选框、一个 #TODO
标签和一个未来两周的“Due by”日期来替换匹配项。
插件的设置选项卡允许创建和删除模式,以及使用系统剪贴板导入和导出模式。规则可以在模式内上下移动,并在其 {{date}}
字符串和正则表达式语法中进行正确性验证。每个规则还可以设置 正则表达式模式。
安装
按照以下步骤安装插件。
- 在 Obsidian 的社区插件浏览器中搜索“Apply Patterns”。
- 在 Obsidian 设置中启用插件(在“Community plugins”下找到“Apply Patterns”)。
- 检查“Apply Patterns”设置选项卡。添加一个或多个模式。
- (可选)在“Hotkeys”设置选项卡中,为“Apply Patterns…”命令添加一个或两个热键。
用法
- 该插件使用 ECMAScript / Javascript风格 的正则表达式。
- 在模式中,规则按顺序执行。因此,规则 1 的输出作为规则 2 的输入,规则 2 的输出作为规则 3 的输入,依此类推。在一组规则的末尾,最终输出用于替换编辑器中的文本。
- 该插件默认提供五个命令:
应用模式:将模式应用于整行
将循环遍历在编辑器中选择的每一行,并将模式应用于每一行的全部内容。应用模式:将模式应用于整个文档
将模式应用于整个文档,作为一个(可能是多行)字符串。应用模式:将模式应用于选择内容
将模式应用于编辑器中选择的文本,作为一个(可能是多行)字符串。应用模式:将模式应用于整个剪贴板
将模式应用于剪贴板,与“将模式应用于整个文档”相同。应用模式:将模式应用于剪贴板(逐行)
将模式应用于剪贴板,与“将模式应用于整行”相同。- 此外,您可以在设置选项卡中设置其他命令。
- 在设置选项卡中:
- 每个规则可以禁用、上移和下移。
- 单击规则的信息图标将打开一个通知,指示规则的“From”和“To”元素是否有效。
- “From”和“To”文本框都可以使用
$1
、$2
等来引用“From”框中的 捕获组。 - “From”和“To”文本框都可以理解自然语言日期(见下文)。
- 可以从模式集合创建其他命令。如果一个命令只匹配一个模式,那么在运行该命令时将应用该模式。如果命令匹配多个模式,它将询问要应用哪个模式。
- 可以创建自定义命令以在整行、当前选择或整个文档上运行。
日期
在规则设置的“从”和“到”文本框中,可以使用自然语言来表示日期,使用以下格式:
{{date:start|end|format (默认为"YYYY-MM-DD")|separator (默认为"|")}}
start
、end
、format
和separator
都是可选的。{{date}}
本身将默认为当前日期,格式为YYYY-MM-DD
。format
可以是 DayJS 中的任何格式。start
和end
都使用chrono-node
进行解析。- 因此,以下格式都是有效的:
日期语法 | 在 2021-08-03 处理后的输出结果 |
---|---|
{{date}} | 2021-08-03 |
{{date:today||YYYY-MM}} | 2021-08 |
{{date:tomorrow}} | 2021-08-04 |
{{date:two weeks from today}} | 2021-08-17 |
{{date:today|two days from now}} | 2021-08-03|2021-08-04|2021-08-05 |
{{date:today|tomorrow|DD}} | 03|04 |
{{date:today|two days from now||, }} | 2021-08-03, 2021-08-04, 2021-08-05 |
这种表示日期的方法允许使用正则表达式强大地搜索日期范围,或者在模式的输出中创建格式化日期的范围。例如,在规则的“到”文本框中使用 [[{{date:today|tomorrow||]], [[}}]]
将创建字符串“[[2021-08-03]], [[2021-08-04]]”。
开发
克隆存储库,运行 yarn
安装依赖项,然后运行 yarn dev
编译插件并监视文件更改。
许可证
该插件的代码和文档设置基于 Obsidian Tasks 插件,由 Martin Schenck 开发。与该插件一样,本插件也是根据 MIT 许可证 发布的。
待办事项
目前该代码库中没有包含自动化测试。特别欢迎使用 Obsidian端到端测试方法 来提供帮助!
反馈交流
其他渠道
版权声明
版权声明:所有 PKMer 文章如果需要转载,请附上原文出处链接。