スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

AppleScriptでも書いてみた。

ついでにXcodeを使ってAppleScriptでも書いてみた。

1.Xcodeから新しいプロジェクトでAppleScript Dropletを選択する。
2.プロジェクトマネージャからMainMenu.nibをダブルクリップする。ここでInterface Builderが起動する。
3.Tools-Show Inspectorを選択してインスペクタを表示させる。
4.MainMenuのパレットのInstanceタブをクリックし、File's Ownerアイコンをクリックする。インスペクタのドロップダウンメニューでAppleScriptをする。Event HandlerのApplication-Launchedをクリックして、チェック印を入れる。
5.Interface Builderを終了させる。
6.プロジェクトマネージャに戻り、Applicatio.Applescriptをダブルクリックすると、エディタが表示される。
7.on launched theObject

end launched
の間にメインルーチンのApple Scriptを挿入し、また2つのサブルーチンを挿入した。なおサブルーチンは福井県立大学の田中求之様とScript Note様のサイトより拝借した。

on launched theObject

tell application "Adobe InDesign CS2_J"
activate
set docCount to count documents
--ドキュメントが開いているか?
if docCount is not 0 then
set mySel to selection of active document
set mySelName to class of item 1 of mySel
--文字が選択されているか?
if length of mySel is 1 and mySelName is character or mySelName is text or mySelName is word then
--ダイアログ表示準備
set oyamoji to contents of item 1 of mySel
--タイトル
set myDialog to make dialog with properties {name:"ルビ入力支援"}
tell myDialog
tell (make dialog column)
--columnの中にrowを作ると中のコンテンツが左寄せになる
tell (make dialog row)
make static text with properties {static label:"親文字:" & oyamoji}
end tell
tell (make dialog row)
make static text with properties {static label:"ルビ:"}
set rubyTBox to make text editbox with properties {min width:200}
end tell
end tell
end tell
--ダイアログ表示
set myReturn to show myDialog
--OKが押されたか?
if myReturn is true then
--フラグ初期値はtrue
set tmpFlag to true
--ルビ入力を変数に格納
set rubyText to edit contents of rubyTBox
--ルビ入力が無ければフラグはfalse
if length of rubyText is 0 then set tmpFlag to false
set result to do shell script "
perl ~/chk_spc.pl " & rubyText
--ルビ入力の中に全角or半角の空白が含まれていなければフラグはfalse
if result is 0 then set tmpFlag to false
set result to do shell script "
perl ~/cnt_spc.pl " & rubyText
--フラグがtrueで、親文字の字数と空白で区切ったルビの数が一致するか?
if tmpFlag is true and length of oyamoji = result + 1 then
--ルビ入力の区切り文字を全角空白で統一
set rubyText2 to my replace2(rubyText, " ", " ")
--ルビ入力を全角空白で切り出す
set rubyText2 to my split2(rubyText, " ")
--モノルビで親文字一字ごとにルビを付加
repeat with i from 1 to length of oyamoji
set ruby flag of character (i) of item 1 of mySel to true
set ruby type of character (i) of item 1 of mySel to per character ruby
set ruby string of character (i) of item 1 of mySel to item i of rubyText2
end repeat
else
--ルビ入力の空白を削除
set rubyText to do shell script "
perl ~/del_spc.pl " & rubyText
--グループルビでルビを付加
set ruby flag of item 1 of mySel to true
set ruby type of item 1 of mySel to group ruby
set ruby string of item 1 of mySel to rubyText
end if
end if
end if
end if
end tell
quit

end launched

--http://mtlab.ecn.fpu.ac.jp/WSM_2001/010824112227.htmlより引用
on replace2(src, tg, rp)

set oldDel to AppleScript's text item delimiters
set AppleScript's text item delimiters to tg
set myList to text items of src
set AppleScript's text item delimiters to rp
set myText to myList as string
set AppleScript's text item delimiters to oldDel
return myText

end replace2

--http://psychocat.net/scriptNote/article.php?id=95より引用
on split2(textValue, deliChar)
set textValue to textValue as Unicode text
set defaultDelimita to AppleScript's text item delimiters --現在のdelimitersを記憶
set AppleScript's text item delimiters to deliChar --今回の定義
set textValue to text items of textValue as list
set AppleScript's text item delimiters to defaultDelimita --delimitersを戻す
return textValue
end split2
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。