12/21 miで選択中の内容をファイルに書き出してperlのプログラムとしてterminalで実行 v2
miの最前面のドキュメント上で選択中のテキストをファイルに書き出して、perlのプログラムとしてTerminalで実行するAppleScriptのバグ修正版です。
最初のバージョンでは、改行コードがCRの状態で書き出されていたため、改行コードをLFに置換してから実行するようにしました。
初版では、選択範囲にコメント行が含まれているとエラーになっていたりしましたが、このバージョンではそういうことはありません。
| スクリプト名:miで選択中の内容をファイルに書き出してperlのプログラムとしてterminalで実行 v2 |
| tell application “mi” tell front document set this_data to selection –エラー対策 if this_data = “” then display dialog “文字列が何も選択されていません” buttons {“OK”} default button 1 with icon 1 with title “エラー” return end if set this_data to this_data as Unicode text end tell end tell –改行コードがCRになっている部分をLFに置換(v2で追加) set this_data to repChar(this_data, ASCII character 13, ASCII character 10) of me set tmpPath to path to temporary items from user domain set fStr to (do shell script “date +%Y%m%d%H%M%S”) & “.pl” set fPath to (tmpPath as string) & fStr write_to_fileUTF8(this_data, fPath, false) of me do shell script “sync” set sText to “perl -w “ & quoted form of POSIX path of fPath doComInTerminalWindow(sText) of me on doComInTerminalWindow(aCMD) tell application “Terminal” set wCount to count (every window whose visible is true) – By wayne melrose – Re: New window in Terminal.app if wCount = 0 then –ウィンドウが1枚も表示されていない場合 do script aCMD else –すでにウィンドウが表示されている場合 do script aCMD in front window end if end tell end doComInTerminalWindow –ファイルの追記ルーチン「write_to_file」 –追記データ、追記対象ファイル、boolean(trueで追記) on write_to_fileUTF8(this_data, target_file, append_data) try set the target_file to the target_file as text set the open_target_file to open for access file target_file with write permission if append_data is false then set eof of the open_target_file to 0 write this_data to the open_target_file as «class utf8» starting at eof close access the open_target_file return true on error error_message try close access file target_file end try return error_message end try end write_to_fileUTF8 –文字置換ルーチン on repChar(origText, targStr, repStr) set {txdl, AppleScript’s text item delimiters} to {AppleScript’s text item delimiters, targStr} set temp to text items of origText set AppleScript’s text item delimiters to repStr set res to temp as text set AppleScript’s text item delimiters to txdl return res end repChar |
