2012年9月24日月曜日

Sakura エディタ で HTML エンコードマクロを作る。

Blogger で XML ソースを書く際には 特殊文字をエンコードする必要があるのだが、面倒なのでエディタで一括で処理できるようにしよう。普段はサクラエディタ (Sakura Editor) を使っているので、サクラエディタのマクロとして作ることにする。



マクロを保存するディレクトリは、「サクラエディタの 設定>共通設定 画面」のマクロタブで確認できる。 デフォルトは、C:\Users\XXXX\AppData\Roaming\sakura\ 。
通常は sakura.ini ファイルがそこにある。


ここにマクロファイルを作成する。
サクラエディタのマクロのヘルプは、Sakura Editor Macro のページを参照。

ヘルプでは関数名が「S_」で始まっているが VBS などの WSH マクロでは S_ はつけない。キーマクロや PPA マクロでは S_ が必要になる。今回は VBS マクロを使うので S_ は不要。
また、ReplaceAll などのコマンドは Editor.ReplaceAll と書くのが正しいのだが、Editor オブジェクトは省略可能になっている。



作ったマクロ (encode-html.vbs ) はこんな感じ。

' encode-html.vbs
' "&" を "&amp;" に "<" を "&lt;" に、">" を "&gt; に全置換
' 結果をクリップボードにコピーする。
ReplaceAll CStr("&"), CStr("&amp;"), CLng(8)
ReplaceAll CStr("<"), CStr("&lt;"), CLng(8)
ReplaceAll CStr(">"), CStr("&gt;"), CLng(8)
SelectAll
Copy
CancelMode   '選択解除

pre 要素の中に入れるためなので、< と > だけでもいいが一応 & もエンコードしてする。
Blogger の編集画面に貼り付けるために作っているのでエンコードした内容はクリップボードに入れておく。

マクロは一回実行されるとキャッシュされるので、マクロの内容を編集しても Sakua エディタを再起動しないと反映されない。マクロを作っているときには 「マクロを実行するたびにファイルを読み直す」を設定しておくと便利。この設定はマクロ単位なので、設定するマクロを選択してからチェックボックスの値を変更して「設定」ボタンを押さないと反映されない。少しわかりにくいので要注意。
マクロが完成したら読み直しは不要なのでチェックを外す。

マクロができたら、先ほどの 共通設定画面のマクロタブで作ったマクロを登録しておく。
あとはこれで 「ツール>登録済みマクロ」 で実行できる。
共通設定画面のキー割り当てで [ctrl] + [Shift] +[0] とかに割り付けておくと簡単に呼び出せる。



マクロの最後に「Undo」を3回入れておくと置換前に戻せるので、エンコードした結果をクリップボードに入れて編集画面は変更なしにできそうだが、ReplaceAll で何も変更されなかったときにマクロ実行前の編集が Undo されてしまうのでそれは断念。

現在のテキストを新規画面にコピーしてからそこでエンコードという案もあるが、FileNew 後の Window 切り替え前に次のコマンドが実行されてしまうことがあり、新規画面にコピーする部分がうまくいかなかった。

0 件のコメント:

コメントを投稿