TextWrangler.app / BBEdit.appで日本語の文字種変換をやってみる

長い間TextWrangler.appを使い続けていて、機能面で不足を感じていた訳ではないのですが、つい出来心(?)でBBEdit.appにアップデートしてしまいました(次のメジャーアップデートの際に、有料でアップデートするかどうか悩ましいところです…)。
有難いことに、スクリプトは(ほぼ?)完全互換のようで、TextWranglerr.app用に書いたものは全てBBEdit.appで動作します。逆も然り。
AppleScriptではScript内の‘Tell application …’以下の名称をTextWranglerからBBEditに変更するだけです。

現在、mi.appでやれることはほぼBBEdit.appでもやれるようにしていますが、日本語の文字種変換だけ手付かずのままでした。

BB

日本語の文字種変換は、対応していないアプリケーションでも「サービス」に対応していれば、‘CharConvX.app’<http://www5.wind.ne.jp/miko/>を使えば実現できてしまうので、それはそれでいいかな、と放置していたわけです。

で、結局‘sed’を使ってみることにしました。

set vString1 to "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッー・「」。、゚゙"
set vString2 to "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッー・「」。、゜゛"

tell application "BBEdit" --BBEditをTextWranglerに置き換えればTextWrangler.appで動作します
	activate
	if (selection of text window 1 as string) is not "" then
		replace "ヴ" using "ヴ" searching in selection of project window 1
		replace "ガ" using "ガ" searching in selection of project window 1
		replace "ギ" using "ギ" searching in selection of project window 1
		replace "グ" using "グ" searching in selection of project window 1
		replace "ゲ" using "ゲ" searching in selection of project window 1
		replace "ゴ" using "ゴ" searching in selection of project window 1
		replace "ザ" using "ザ" searching in selection of project window 1
		replace "ジ" using "ジ" searching in selection of project window 1
		replace "ズ" using "ズ" searching in selection of project window 1
		replace "ゼ" using "ゼ" searching in selection of project window 1
		replace "ゾ" using "ゾ" searching in selection of project window 1
		replace "ダ" using "ダ" searching in selection of project window 1
		replace "ヂ" using "ヂ" searching in selection of project window 1
		replace "ヅ" using "ヅ" searching in selection of project window 1
		replace "デ" using "デ" searching in selection of project window 1
		replace "ド" using "ド" searching in selection of project window 1
		replace "バ" using "バ" searching in selection of project window 1
		replace "ビ" using "ビ" searching in selection of project window 1
		replace "ブ" using "ブ" searching in selection of project window 1
		replace "ベ" using "ベ" searching in selection of project window 1
		replace "ボ" using "ボ" searching in selection of project window 1
		replace "パ" using "パ" searching in selection of project window 1
		replace "ピ" using "ピ" searching in selection of project window 1
		replace "プ" using "プ" searching in selection of project window 1
		replace "ペ" using "ペ" searching in selection of project window 1
		replace "ポ" using "ポ" searching in selection of project window 1
		set PreString to (selection of text window 1 as string)
		set the clipboard to my Sed_y(PreString, vString1, vString2)
		delay 0.1
		paste
	else
		display notification "文字列を選択してから実行しましょう。" with title "Notification" subtitle ""
	end if
end tell

to Sed_y(TheString, SString1, SString2)
	do shell script "export LANG=ja_JP.UTF-8; " & "echo " & quoted form of TheString & " | sed -e 'y/" & SString1 & "/" & SString2 & "/'"
end Sed_y

半角カタカナの濁音・半濁音については、半角カタカナが2文字に換算されるので‘sed’のルーチン枠内では変換できないので、無骨に1文字ずつ置換をしています。逆方向の変換は変数を逆にすればOKです。
このやり方をベースにすれば、全角英数字⇄半角英数字の変換も容易です。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中