Xcodeのヘルプの情報を取得してみる。(再び) [AppleScript辞書はつくれるか?]
役に立つ情報ではないけれど、以前にやっていたXcodeヘルプの情報を取得し、今後の素材として保存をしておこうと作業をしてみました。
今回は、ヘルプの左側のメニューのテキストを取得してみようと思います。
|
(* 呼び出すコードを変数に入れ簡素化 *) set {LF, CR, FF} to {ASCII character 10, ASCII character 13, ASCII character 12} --LF=Linuxでよく使われる改行コード, CR=Macでよく使われる改行コード --FF=今では滅多に使われない改頁コード(滅多に使われないコードなので借りました。正規な使い方ではないです)
(* ヘルプウインドウの左のメニューリストの全てを取得 *) tell application "System Events" tell process "Xcode" set aNo to 1 log "読込開始" --場合によっては時間がかかるので進行状況を確認するためのログ set objList to entire contents of outline 1 of scroll area 1 of splitter group 1 of window 1 log "読込終了" end tell end tell try --try文を使って、テキストにできないデータがあってもテキスト化する set ans to objList as text on error errText set ans to text 1 thru ((offset in errText of "のタイプ") - 1) of errText if (character 1 of ans) = "{" then set ans to text 2 thru -2 of ans -- 入力がリスト・レコードの場合は先頭と末尾を外す end try
(* デリミタ(単語を入れ替える)処理 *) set tmp to AppleScript's text item delimiters --デリミタの初期状態を記憶 -- shell script 処理で邪魔になる "(ダブルクオート)を一時的に入れ替える set AppleScript's text item delimiters to "\"" --半角の " set theList to every text item of ans set AppleScript's text item delimiters to "”" --全角の ” set ans to theList as string --,(カンマ)部分で改行処理をする set AppleScript's text item delimiters to "”, " --念の為、『,』の単体カンマではなく、その周りを含めた『”, 』で対応 set theList to every text item of ans set AppleScript's text item delimiters to "”" & LF -- shell script ではLFを改行に使う set ans to theList as string -- set AppleScript's text item delimiters to tmp --デリミタを元に戻す
(* 用意されたテキストを見やすく修正してファイルとして出力 *) --オブジェクトのパスを書き出す do shell script ("echo \"" & ans & "\" | grep -e 'class sttx' | sed s/'window ”'/'window 1" & FF & "'/g | cut -d " & FF & " -f1 | sed s/'”'/'\\\"'/g > $HOME/Desktop/outputText1.txt ;") --オブジェクトの名前のみを取得して書き出す do shell script ("cd $HOME/Desktop/ ; cut -d '\"' -f2 outputText1.txt > outputText2.txt ;")
(* 保存された名前のテキストをログで表示する *) set ans to do shell script ("cat $HOME/Desktop/outputText2.txt ;") log ans
"End" |
● 最後のシェルスクリプト処理部の説明
echo '文字' -- 文字などを直接読み込みます
grep -e '検索する文字' [ファイルのアドレス(省略可)] -- -eというオプションの後の文字列を探し、含まれたすべての行を取得
sed s/'差替え前の文字'/'差替え後の文字'/g [ファイルのアドレス(省略可)] -- 文字を入れ替えます。さいごのgを入れないと最初の一つだけしか差替えません
cd [ファイルのアドレス(省略可)] -- 作業フォルダを変更します。同じフォルダ内でファイルを呼び出す際に使用して、アドレスを短くできます
cut -d '区切り文字' -f(数字) [ファイルのアドレス(省略可)] -- -dで指定した'区切り文字'で分けられた文字列の、数字場所を取得
> [書出すファイルのアドレス] -- > はファイルとして書き出します。
| -- パイプを使い、左で出された一時的なデータを右に引き継ぎます。
; -- コードの終点。一時的なデータは引き継がれません。
\ -- エスケープシーケンス。"などの特殊文字を命令語として認識させずに、普通の文字として扱えるようになります。
sedで使用する場合はエスケープシーケンスをさらにエスケープしないといけない場合があります。
ヘルプの画面を自動的に開くというものではないので、あらかじめヘルプを開いておかなければなりません。
Xcodeの画面の上のメニューから
Help > developer documentation
でメニューを開いておきます。
その状態で上記のスクリプトを実行すると、数秒後のデスクトップ上に
outputText1.txt(オブジェクトのリスト)
outputText2.txt(名前のリスト)
が作られます。
ただそれだけです。
コメント 0