Alfred Workflowsで入力文字列からリストを作るRubyスクリプトの雛形


Alfred Workflowsは便利なんだけど、いざ自分で作ろうとしたとき「動的にリストを作って表示したい」と思った最初の一歩だけでもちょっとめんどくさかったので雛形を作りました。

Alfred Workflowsって何? という人はこちらの記事をどうぞ。
https://qiita.com/jackchuka/items/ccd3f66f6dd00481b98b#workflows

実現したいこと

ヘルパーライブラリとしてはPython製の https://www.deanishe.net/alfred-workflow/ とかが見つかります。が、そこまで大層なものは別に欲しくない。

とりあえず改造しやすい最小限のコードで、以下の画像のような感じの入力と出力が欲しい。
あとリスト項目を選択したら、なんかクリップボードに項目がコピーされると嬉しい。

コード

def item(q)
    {:title => q, :subtitle => "サブタイトル", :arg => "#{q}ですよ" }
end

queries = ARGV[0].split
items = queries.map do |q| item(q) end

puts "<items>"
items.each_with_index do |item, i| puts <<EOS
  <item uid="#{i}" arg="#{item[:arg]}">
    <title>#{item[:title]}</title>
    <subtitle>#{item[:subtitle]}</subtitle>
    <icon>icon.png</icon>
  </item>
EOS
end
puts "</items>"

使い方


Script Filter の言語をRubyにしてベタ書きで書いてもいいし、あるいは Script Filter で bashとかを選んで ruby hoge.rb "{query}" とか書いてもいい。

以上です。