ruby -e scriptというのは、知っていましたし、使うこともあります。
例えば、こんな感じ:
ただ、AppleScript から利用するのは「;」でつなぐなどで視認性が良くないと、思い込んでいました。
しかし、ザリガニが見ていた...。 のを、さらに後ろからのぞき見していたところ、そんなふうに使えるの!?と驚きました。視認性が良くなる方法ですね!
で、さっそく真似イヤ参考にしてみました。
Automator:rubyアクション-Weather Hacks(続) - GameSprit で使った ruby スクリプトを appleScript から実行してみます。Weather Hacks を読み込むスクリプトです。以前に、AppleScript からXMLファイルを操ってみようとして何度か挫折したものです。
そのときの Automator 用 ruby アクションはこんなの:
これをAppleScript から利用すると、こんな感じ:
さらにサブルーチンにしてみました。
ruby って、なんとなく AppleScript に似ていて、それでいてモダンで、いいですね。
うーん!活用の幅が広がりそうです。
Event-Driven XML Programming Guide: Introduction to Event-Driven XML Programming Guide for Cocoa
MacScripter / XML to List
キーワード:Weather Hacks、AppleScript、ruby -e、ruby アクション、ruby スクリプト、天気
例えば、こんな感じ:
以下は等価です。 ruby -e "5.times do |i|" -e "puts i" -e "end" ruby -e "5.times do |i| puts i end" ruby -e "5.times do |i|; puts i; end" (Rubyの起動 - Rubyリファレンスマニュアル)
ただ、AppleScript から利用するのは「;」でつなぐなどで視認性が良くないと、思い込んでいました。
しかし、ザリガニが見ていた...。 のを、さらに後ろからのぞき見していたところ、そんなふうに使えるの!?と驚きました。視認性が良くなる方法ですね!
で、さっそく真似イヤ参考にしてみました。
Automator:rubyアクション-Weather Hacks(続) - GameSprit で使った ruby スクリプトを appleScript から実行してみます。Weather Hacks を読み込むスクリプトです。以前に、AppleScript からXMLファイルを操ってみようとして何度か挫折したものです。
そのときの Automator 用 ruby アクションはこんなの:
require 'open-uri'
require 'rexml/document'
# 変数宣言
xmlData = 0
whetherData = 0
open("http://weather.livedoor.com/forecast/webservice/rest/v1?city=60&day=today") {|f|
xmlData = f.read
}
# xml から天気データを取得
whetherData = REXML::Document.new(xmlData)
whethers = Array.new
whethers << whetherData.elements["/lwws/title"].text
whethers << whetherData.elements["/lwws/telop"].text
whethers << whetherData.elements["/lwws/description"].text
whethers << whetherData.elements["/lwws/image/url"].text
puts whethers</pre>
これをAppleScript から利用すると、こんな感じ:
"require 'open-uri'
require 'rexml/document'
# 変数宣言
xmlData = 0
weatherData = 0
open(\"http://weather.livedoor.com/forecast/webservice/rest/v1?city=60&day=today\") {|f|
xmlData = f.read
}
# xml から天気データを取得
weatherData = REXML::Document.new(xmlData)
weathers = Array.new
weathers << weatherData.elements[\"/lwws/title\"].text
weathers << weatherData.elements[\"/lwws/telop\"].text
weathers << weatherData.elements[\"/lwws/description\"].text
weathers << weatherData.elements[\"/lwws/image/url\"].text
puts weathers"
do shell script "/usr/bin/ruby -e " & quoted form of result</pre>
さらにサブルーチンにしてみました。
--http://d.hatena.ne.jp/zariganitosh/20100211/1265875573
my getWeather(81)
on getWeather(nr)
"require 'open-uri'
require 'rexml/document'
# 変数宣言
xmlData = 0
weatherData = 0
open(\"http://weather.livedoor.com/forecast/webservice/rest/v1?city=" & nr & "&day=today\") {|f|
xmlData = f.read
}
# xml から天気データを取得
weatherData = REXML::Document.new(xmlData)
weathers = Array.new
weathers << weatherData.elements[\"/lwws/title\"].text
weathers << weatherData.elements[\"/lwws/telop\"].text
weathers << weatherData.elements[\"/lwws/description\"].text
weathers << weatherData.elements[\"/lwws/image/url\"].text
puts weathers"
do shell script "/usr/bin/ruby -e " & quoted form of result
return result
end getWeather</pre>
ruby って、なんとなく AppleScript に似ていて、それでいてモダンで、いいですね。
うーん!活用の幅が広がりそうです。
Event-Driven XML Programming Guide: Introduction to Event-Driven XML Programming Guide for Cocoa
MacScripter / XML to List
キーワード:Weather Hacks、AppleScript、ruby -e、ruby アクション、ruby スクリプト、天気