write_file#

[CN]

该 Script Filter 的功能是让用户将文本写入特定文件. 该例子用来展示如何实现按下回车后执行任意 Python 逻辑. 该技巧可以用来实现按下回车后做到任何事情, 因为底层就是一个 Python 脚本.

其原理如下:

我们这里多了一个 WriteRequestHandler 的 handler. 这个 handler 并不会跟任何 Script Filter 所对应, 而是仅仅作为一个 CLI 命令行接口而存在. 这样我们在其他的 handler 中 只要将 item 之后的 action 定义为 Run Script, 那么就可以按下回车后用 bash 来执行任何 Python 逻辑. 而这个 bash command 就是 item 的 argument. 这个 WriteRequestHandler 则是实现了 bash command 所对应的功能.

WriteRequestHandler 实现了将任意 content 写入 file.txt 的功能. 并且在 encode_query() 中实现了如何将 main 中的参数编码成字符串的函数.

Handler 则实现了 Script Filter 的功能.

在 Alfred Workflow 的 Canvas 界面中 Script Filter 的设置如下:

  • Keyword: afwf-example-write-file, Argument Required

  • Language: /bin/bash

  • Script: python main.py ‘write_file {query}’

  • 连接一个 Utilities - Conditional 的控件, 条件是 {var:run_script} is equal to y.

  • 连接一个 Actions - Run Script 的控件, Script 的参数是 {query}.

  • 连接一个 Utilities - Conditional 的控件, 条件是 {var:send_notification} is equal to y.

  • 连接一个 Outputs - Post Notification 的控件, Title 的参数是 {var:send_notification_title}

    Subtitle 的参数是 {var:send_notification_subtitle}.

class afwf_example.handlers.write_file.WriteRequestHandler(id)[source]#
main(content: str) ScriptFilter[source]#

[CN]

用来处理 Script Filter 的具体业务逻辑的主方法. 是一个抽象方法. 你需要 override 这个方法 并给予具体的实现.

该方法可以接收任何自定义的参数, 并必须返回一个 ScriptFilter 对象, 里面包含了Alfred 对话框里的 Drop Down Menu 中的 Item 对象.

在设计上, 这个方法应该着眼于核心业务逻辑, 并且可以被单元测试充分覆盖. 在单元测试中, 你可以调用这个方法传入各种可能得参数组合, 并返回一个 ScriptFilter, 然后检查里面的 items 是否符合预期.

parse_query(query: str)[source]#

[CN]

一个抽象方法. 用来解析 Script Filter 传入的 query 字符串. 返回的字典要和 main() 中的参数一一对应. 注意, 即使是空字符串, 返回的字典也必须包含所有的参数.

Parameters:

query – 你在 Alfred Workflow UI 中跟在 keyword 之后的 query 字符串.

Returns:

一个字典, 它和 main() 中的参数一一对应.

encode_query(content: str) str[source]#

[CN]

一个抽象方法. 用来将结构化的参数编码为字符串. 该方法的参数要和 main() 中的参数一一对应.

class afwf_example.handlers.write_file.Handler(id)[source]#
main(content: str) ScriptFilter[source]#

[CN]

用来处理 Script Filter 的具体业务逻辑的主方法. 是一个抽象方法. 你需要 override 这个方法 并给予具体的实现.

该方法可以接收任何自定义的参数, 并必须返回一个 ScriptFilter 对象, 里面包含了Alfred 对话框里的 Drop Down Menu 中的 Item 对象.

在设计上, 这个方法应该着眼于核心业务逻辑, 并且可以被单元测试充分覆盖. 在单元测试中, 你可以调用这个方法传入各种可能得参数组合, 并返回一个 ScriptFilter, 然后检查里面的 items 是否符合预期.

parse_query(query: str)[source]#

[CN]

一个抽象方法. 用来解析 Script Filter 传入的 query 字符串. 返回的字典要和 main() 中的参数一一对应. 注意, 即使是空字符串, 返回的字典也必须包含所有的参数.

Parameters:

query – 你在 Alfred Workflow UI 中跟在 keyword 之后的 query 字符串.

Returns:

一个字典, 它和 main() 中的参数一一对应.