本脚本是为了能够在电脑上直接制作出 .taioactions
文件。
TaioApp 的动作绝大多数在 JavaScript 都可以完成,因此只实现 JavaScript 无法完成或者不够完善的那部分功能。
- 注释
- 文本
- 显示消息
- 设置变量
- 获取变量
- 运行 Javascript
- 任意功能——可以直接插入 JSON(不过没有检查)
关于为什么目前只实现这 7 个,请参考 TaioApp 中 JavaScript 无法取代的功能
其他功能以后也许会添加。
const {
presetIconColors,
App,
textWithVariables,
comment,
text,
setVar,
getVar,
uitoast,
runjs
} = require("taioapp-js");
// 新建一个应用
const app = new App();
// 输入动作
app.actions = [
comment("这里填评论"),
text("这里显示文本"),
setVar("变量名字", textWithVariables("ズ𠮷😊${@input}")),
getVar("变量名字"),
runjs("js"),
uitoast("信息"),
// 直接插入JSON,这里以“显示文本内容”举例
{
type: "@ui.render-text",
parameters: {
title: {
value: ""
},
text: {
value: "$",
tokens: [
{
location: 0,
value: "@input"
}
]
}
}
}
];
// 输入名字
app.name = "Taio应用";
// 输入描述
app.summary = "";
// 更改图标,默认图标为 wand.and.stars
app.icon = "wand.and.stars";
// 更改图标颜色,可以从presetIconColors中选择
app.iconColor = presetIconColors[0];
// 最后输出!
const output = app.output;
console.log(output);
TaioApp 中部分功能需要一些技巧才能在 JavaScript 中使用
TaioApp 有一些特定名字的变量,来获取指定的内容
- 上个结果
@input
- 剪贴板
@clipboard.text
- 当前日期
@date.style(2,1)
或者@date.format(yyyy)
- 文件名
@editor.file-name
- 扩展名
@editor.file-extension
- 全部文本
@editor.full-text
- 选中的文本
@editor.selection-text
- 选中的位置
@editor.selection-location
- 选中的长度
@editor.selection-length
// documents位置
const documentsPath =
$objc("NSFileManager")
.invoke("defaultManager")
.invoke("temporaryDirectory")
.jsValue()
.path.slice(0, -3) + "Documents";
// 本地文件位置
const editorPath = documentsPath + "/Editor";
// iCloud位置
const icloudPath = "drive://",
// iCloud中的文件位置
const icloudEditorPath = icloudPath + "Editor";
通过这些,就可以用 JavaScript 遍历文件或者打开特定文件
综上所述,TaioApp 中 JavaScript 无法取代的动作还有:
- 用户界面:全部,不过多数有替代品,没有替代品的是“显示消息”(特殊 UI)、“比较文本内容”
- 剪贴板:全部
- 脚本:运行 JavaScript
以及为了和使用者进行交互,所必须的动作:
- 注释
- 文本
- 设置变量
- 获取变量
至于“用户界面”和“剪贴板”中的其他内容,暂时用不着。更何况以后也许会增加诸如 $clips
的 API。
-
App
最核心的类。
拥有读写属性
actions
,name
,icon
,iconColor
,summary
,以及只读属性output
,通过前 5 个写入属性,最后一个获取 JSON 文本 -
TextWithVariables
用于将文本和变量组合起来,在
text
,setVar
,getVar
,uitoast
中均可用。输入文本的地方可以此替代,从而加入变量。不过并不直接使用它,而是通过方法
textWithVariables()
来创建。 -
Component
用于动作列表中的方法均是为了创建此类。
不直接使用。
-
textWithVariables(value: string, tokens: {location: numer, values: string}[]): TextWithVariables
或者textWithVariables(value: string): TextWithVariables
创建
TextWithVariables
的实例。第一种用法例如
textWithVariables("ズ𠮷😊$", [{ location: 6, value: "@input" }])
。 这种用法只会帮你检查错误,然后全部照搬进 json。 在 value 中用$
代表变量。另外 location 需要使用 js 内置方法来计算,所以ズ𠮷😊
的长度为 6,而不是 3。第二种用法例如
textWithVariables("ズ𠮷😊${@input}")
。 这种用法可以自动帮你填写 tokens。 不过这会带来两个限制,第一不能在使用变量以外的情况中连用${
这两个字符,第二不能在变量中使用}
字符。 -
comment(text: string): Component
注释
-
text(text: string | TextWithVariables): Component
文本
-
setVar(name: string, value: string | TextWithVariables): Component
设置变量,变量名只能为字符串
-
getVar(name: string | TextWithVariables, fallback: number): Component
获取变量
fallback 可选 0, 1,分别代表返回空白文本、停止运行。默认 0
-
uitoast(title: string | TextWithVariables, style: number, waitUntilDone: boolean): Component
显示消息,支持 3 个参数:
- title 标题
- style 可选 0, 1, 2,分别代表文本、成功、失败。默认 0
- waitUntilDone 等待直到结束。默认 false
-
runjs(js: string| {path: string}): Component
运行 JavaScript,可以直接传入字符串,也可以通过
{path: string}
指定文件位置以供读取