为了让用户更好地使用 Shire,我们提供了一些常规自定义变量,以便用户可以更方便地使用。
几种方式:
常规自定义变量,可以用于:
在Shire中,我们借鉴了 Unix/Linux 的设计理念和 Shell 编程模式,特别是 Pattern-Action 模型。该模型通过定义模式和动作来处理数据:
例如,在Shire中,您可以编写如下代码:
这里,/*.java/ 是模式部分,用于匹配所有以 .java 结尾的文件,而 { grep("error.log") | sort | xargs("rm")} 是动作部分,
表示对匹配的文件执行一系列操作:首先搜索包含 "error.log" 的行,然后对这些行进行排序,最后将结果输出到标准输出。
在 Shire 中,我们利用了 Intellij 的强大功能,如正则表达式匹配、代码高亮和语法检查,以帮助用户更高效地编写代码。例如,
使用正则表达式 .*.java 可以轻松地匹配所有 Java 源文件。
明白了!让我为您完整优化一下文档,包括对示例的详细解释:
在这个示例中:
var2 变量:匹配所有以 .java 结尾的文件。动作部分使用了管道操作符 |,依次执行了 grep("error.log")、sort
,然后再次使用 cat 输出结果。
extContext 变量:匹配所有名为 build.gradle.kts
的文件。动作部分执行了 grep("org.springframework.boot:spring-boot-starter-jdbc"),并输出一条指示该项目使用 Spring
Framework 的信息。
在这个示例中:
testTemplate 变量:匹配所有以 (.*) 开头、.java 结尾的文件。根据不同的匹配结果执行不同的动作。
Controller,则输出 ControllerTest.java 的内容。Service,则输出 ServiceTest.java 的内容。default),则输出 DefaultTest.java 的内容。| 函数类别 | 功能描述 | 参数 | 示例 |
|---|---|---|---|
| prompt | 显示消息提示 | message: 要显示的消息内容 | prompt("You are xxx") |
| grep | 使用模式进行搜索 | patterns: 要搜索的模式 | grep("error") |
| sed | 查找和替换操作 | pattern: 要查找的模式replacements: 替换的字符串isRegex: 是否为正则表达式 | sed("s/old/new/g") |
| sort | 排序操作 | arguments: 排序所需的参数 | sort |
| uniq | 去除重复行 | texts: 要处理的文本 | uniq("line1", "line2", "line1") |
| head | 获取文件的前几行 | number: 要获取的行数 | head(10) |
| tail | 获取文件的末尾几行 | number: 要获取的行数 | tail(5) |
| xargs | 处理变量 | variables: 要处理的变量 | xargs("arg1", "arg2") |
| 打印文本 | texts: 要打印的文本 | print("Hello", "World") | |
| cat | 连接文件 | paths: 要连接的文件路径 | cat("file1.txt", "file2.txt") |
| execute | 异步执行 Shire 脚本 | string: 要执行的脚本内容 | execute("next-script.shire") |
| notify | 使用 IDE 通知 | message: 要显示的通知消息 | notify("Process completed successfully.") |
| splitting | 分割文本或文件 | paths: 要分割的文本或文件路径 | splitting("file.txt", "file2.txt") |
| embedding | 嵌入文本 | entries: 要嵌入的文本条目 | embedding("entry1", "entry2") |
| searching | 搜索文本 | text: 要搜索的文本 | searching("pattern") |
| reranking | 重新排序 | type: 重排类型,默认 lostInTheMiddle | reranking("pattern") |
| caching | 缓存语义 | text: 要缓存的文本 | caching("data") |
| redact | 屏蔽敏感数据 | redact() | |
| thread | 线程执行(异步) | path: 要执行的脚本路径 | thread("script.shire") |
| jsonpath | 使用 JsonPath 选择数据 | jsonPath: JsonPath 表达式,其中 jsonString 为可选 | jsonpath(jsonString, "$.store.*") |