AppleScriptとターミナルでJavaScriptを使う

AppleScriptでJavaScriptを使いたい
ターミナルでJavaScriptを使いたい
※ターミナルでもencodeURIとencodeURIComponentは上手くエンコードしてれない。のでURL全体をエンコードしたい場合はリンクを参照。BWNSUY: AppleScriptでURLエンコード
ホームディレクトリの「.bash_profile」というファイルにJavaScriptCoreへのPATHを記述します。
ターミナルでPATHを通す
ターミナルでJavaScriptを使いたい
AppleScriptでJavaScriptを使いたい
applescript jsc javascriptcore具体には、URL全体をエンコード(encodeURI)しておきたい時
下記のように、Sfafariを経由して、JavaScriptを使う事ができるが、Safariが起動してまうし、Safariが起動していてもウィンドウがゼロの時はエラーが出るので、スマートではない。
set theText to "アップルスクリプト"
--JavaScript
tell application "Safari"
set theURL to (do JavaScript "encodeURI(\"" & theText & "\")" in document 1) as text
log "encode=" & theURL
(*0=%E3%82%A2%E3%83%83%E3%83%97%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88*)
set theURL to (do JavaScript "decodeURI(\"" & theText & "\")" in document 1) as text
log "decode=" & theURL
(*0=アップルスクリプト*)
end tell
そこで、do shell scriptでJavaScriptCore.frameworkを直接呼んで、URL全体をエンコード(encodeURI)。
※encodeURIとencodeURIComponentは上手くエンコードしてれない。のでURL全体をエンコードしたい場合はリンクを参照。BWNSUY: AppleScriptでURLエンコードしかし、Safariを通さずJavaScriptを使えるので今後、何かの役にたつかも知れない。
キモはprint([native code])ターミナルでPATHを通すことで下記とできる。自分のMacだけで使う時はこれでOK。do shell script "jsc -e 'print(eccape(\"" & theText & "\"))'"
ln /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc /usr/bin
set theText to "あ"
--escapeでエンコード
set theURL to do shell script "/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc -e 'var t=\"" & theText & "\";print(escape(t))'"
log "encode =" & theURL
(*encode =%E3%81%82*)
--デコード
set theURL to do shell script "/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc -e 'var t=\"" & theURL & "\";print(decodeURI(t))'"
log "decode =" & theURL
(*decode =あ*)
--encodeURIでエンコード
set theURL to do shell script "/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc -e 'var t=\"" & theText & "\";print(encodeURI(t))'"
log "encode =" & theURL
(*encode =%C3%A3%C2%81%C2%82*)
--デコード
set theURL to do shell script "/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc -e 'var t=\"" & theURL & "\";print(decodeURI(t))'"
log "decode =" & theURL
(*decode =ã*)
--encodeURIComponentでエンコード
set theURL to do shell script "/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc -e 'var t=\"" & theText & "\";print(encodeURIComponent(t))'"
log "encode =" & theURL
(*encode =%C3%A3%C2%81%C2%82*)
--デコード
set theURL to do shell script "/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc -e 'var t=\"" & theURL & "\";print(decodeURI(t))'"
log "decode =" & theURL
(*decode =ã*)
ターミナルでJavaScriptを使いたい
tarminal jsc※ターミナルでもencodeURIとencodeURIComponentは上手くエンコードしてれない。のでURL全体をエンコードしたい場合はリンクを参照。BWNSUY: AppleScriptでURLエンコード
ターミナルでURLをエンコードしてみる
/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc -e 'print(encodeURI("http://ja.wikipedia.org/wiki/アップルスクリプト"))'又は
/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc encodeurl.js
ホームディレクトリに「encodeurl.js」を新規作成し下記を記述。// encodeurl.js(function(){print(encodeURI("http://ja.wikipedia.org/wiki/アップルスクリプト")); //標準出力は print 関数}()); // コードは即時関数で実行させる
JavaScriptCoreへPATHを通す
1 - .bash_profileに記述する方法ホームディレクトリの「.bash_profile」というファイルにJavaScriptCoreへのPATHを記述します。
alias jsc="/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc"ターミナルで.bash_profileを開き上記を追記して保存。.bash_profileがない時は新規作成される。
vim ~/.bash_profile変更した.bash_profileを反映させる
source ~/.bash_profile2 - ターミナルでハードリンクまたはシンボリックリンクする方法
ターミナルでPATHを通す
ln /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc /usr/local/bin.bash_profileへの操作、vimのコマンドについての参考サイト
- MacのターミナルでJSを走らせる。 - modifiedの日記
- Mac OS Xで環境変数にPATHを追加する方法 at HouseTect, JavaScriptな情報をあなたに
- feb19.jp blog - VIM (Vi) をターミナルで操作 / Mac OS X
- viエディタの使い方
jsc -e 'print(encodeURI("http://ja.wikipedia.org/wiki/アップルスクリプト"))'
jsc runner.js