问题标签 [sdef]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
206 浏览

typescript - 将 AppleScript sdef 转换为 TypeScript .d.ts?

大多数 OS X 应用程序(尤其是 Apple 编写的应用程序)都可以使用 AppleScript 或 JavaScript 编写脚本。每个应用程序支持的 API 由一个SDEF文件描述。(参见例如sdef /Applications/Safari.app。)

有没有办法.d.ts.sdef文件中自动生成文件,从而创建适合与 TypeScript 一起使用的环境类型?

0 投票
0 回答
396 浏览

macos - 使用 AppleScript 访问对象的属性

我正在向我的 macOS 应用程序添加 AppleScript 支持,但在访问我定义的对象的属性时遇到问题。

sdef 文件生成以下目录:

sdef活动

当我运行以下脚本时:

我得到这个结果:

获取所有活动输出

但是,当我运行此脚本时:

我收到此错误:

知道我做错了什么吗?谢谢!

0 投票
1 回答
629 浏览

swift - 从 AppleScript 调用 Swift 方法

我正在尝试编写一个调用我的 Swift 应用程序以获取值的 AppleScript。该方法接受一个字符串并且需要返回另一个字符串。

这是我的 .SDF 文件:

对应的 Swift 代码相当简单:

最后我的 AppleScript 在这里:

当我执行 AppleScript 时,它会识别我的命令,但它不会调用我尝试与之关联的 Swift 代码。Xcode 或 AppleScript 都没有报告问题。我是否遗漏了什么或将我的代码放在了错误的位置?

0 投票
1 回答
401 浏览

applescript - 如何使用脚本定义 (sdef) 编译 AppleScript 脚本库 (scptd)

我希望能够使用脚本定义 (sdef) 反编译和编译 AppleScript 脚本库 (scptd),因此我可以将文本源置于版本控制中。

这个问题的背景是将我的 AppleScript 源代码放在git. 这个 stackoverflow question/answer已经回答了我的大部分问题,但是我在此处描述的问题仍然阻止我将所有脚本放入 git。

在这个库test.scptd中,我有一个名为 的处理程序,say it loudsdef文件中test.sdef它被声明为带有代码的命令SAYTLOUD

使用时osadecompile,我得到一个 AppleScript 文本文件test.applescript

但是,无法使用 编译此源代码osacompile,因为该sdef文件的链接已损坏且say it loud不是有效标识符。

幸运的是,我找到了二进制compile_as来源在这里),它是优秀编辑器 TextMate 的一部分。反编译时,我得到以下源文件test_raw.applescript

这就是我想要的,因为代码仍然是有效的 AppleScript 并且可以运行。唯一的区别是您不能按名称调用处理程序,但您需要使用原始代码。这里没有问题。

我的问题:我如何编译AppleScript 文件test_raw.applescript(带有原始代码),并与test.sdef文件结合成test.scptd.

一个明显的答案是使用 Objective-C 和 OSAKit(如果可能的话)创建我自己decompile_as的,但我不具备相关技能。

0 投票
1 回答
30 浏览

applescript - 如何使用括号而不是花括号在 sdef 中定义 2 参数处理程序?

我想定义一个可以这样调用的处理程序:

我在 SDEF 中定义了它:

不幸的是,我的处理程序虽然仍然正常运行,但自动被重写如下:

如何让它保留语法handler("Hello", "World"),而不是format {"Hello {}", "World"}