为了让用户更好地使用 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.*") |