egblidge Universalの使い方 2

  • 投稿日:
  • by
  • カテゴリ:

前回、 egbridge Universalのユニバーサルパレットはかなり便利で、 ブラウザ上でもタグ整形を快適にできるてかっこいい、といったことを書いた。

しかしデフォルトでついている機能だけではちょっと物足りない! そんなよくばりさんな私のために(自分かよ!)ユニバーサルパレットのカスタマイズ方法を大公開! 結構便利だよ!

さて、ユニバーサルパレットのボタンを押したらいろいろなことが起きるわけだが、 その正体はズバリAppleScriptである。 つまり、自作のAppleScriptをユニバーサルパレットに追加すれば、 自分に必要な機能を持たせた、「ワタシだけのユニバーサルパレット(はーと)」を作れちゃうのだ。

今回の目的は、ユニバーサルパレットの中でも「ブログパレット」の拡張なわけだが、 デフォルトの状態での「ブログパレット」は以下のような感じである。

eb_custom-1.png

ボタンがいろいろあるが、それぞれ下のような動作をする(ヘルプをコピペ)。

太字 選択されている文字列を「strong」タグで囲みます。
斜体 選択されている文字列を「em」タグで囲みます。
下線 選択されている文字列を「ins」タグで囲みます。
取り消し線 選択されている文字列を「del」タグで囲みます。
引用 選択されている文字列を「blockquote」タグで囲みます。
Safari 選択されている文字列を「a」タグで囲みます。リンク先はSafariで開いているページとなります。Safariでタブ・ブラウズが有効な場合は、タブで表示されているページが使用されます。また、複数のウインドウを開いている場合にはリストで表示されます。
フォントのサイズ 選択されている文字列を「font」タグで囲み、ポップアップメニューで選ばれたサイズを指定します。
フォントの色 選択されている文字列を「font」タグで囲み、ポップアップメニューで選ばれた色を指定します。
テーブル 選択されている文字列を「table」タグで囲んで表組みを行います。改行が行、タブが列の境目になります。
リスト 選択されている文字列を「ul」タグで囲んで番号なしリストを作成します。改行ごとにリストの新しい項目になります。
番号付きリスト 選択されている文字列を「ol」タグで囲んで番号付きリストを作成します。改行ごとにリストの新しい項目になります。

しかしこれだけだと3年に1回ぐらいしか使わないボタンがあったり、 使いたいボタンがなかったり、 「リスト」で<li>タグが閉じなかったりして気にくわないんです。 ということで、カスタマイズして行こうと思う。

まず、ユニバーサルパレットの下向き矢印u_palette_arrow.pngを押すと出るメニュー(下図)の中の 「プラグインフォルダを開く」を選ぶ。

eb_custom-2.png

するとホームディレクトリの 「ライブラリ/Universal Palette Plug-Ins」フォルダが開く。 この中にフォルダを追加して「プラグインを再読み込み」すれば、ユニバーサルパレットに項目名として表示されるのだ。 デフォルトで既に「AppleScript サンプル」フォルダ入っているので、 ここを見ればどういう感じか理解できるだろう。

というわけで、メニューの追加に移ろう。 参考にしたのはJedit X用のAppleScriptのHTML編集用のマクロ「Macro Collection for HTML Ver. 1.2」。 こちらをいじって、egbridge universalのパレットにHTMLタグ編集ができるようにする。

さて、ワタシが欲しい機能は以下のものだ。

  1. <strong></strong>で囲む
  2. <b></b>で囲む
  3. <em></em>で囲む
  4. <h1>で囲む
  5. <h2>で囲む
  6. <h3>で囲む
  7. <p></p>で囲む
  8. <blockquote></blockquote>で囲む
  1. 番号付きリスト<ol><li></li></ol> データ区切りを改行で(</li>付き)
  2. リスト<ul><li></li></ol> データ区切りを改行で(</li>付き)
  3. 表<table><tr><td></td></tr></table> データtab区切り+改行で

実は1〜8まではほぼ同じ、9と10もほぼ同じで使い回せる。あと11。 ということで、作るのは実質3つでいいことになる。 以下、この3つのソースコードを書いておく。

まずは、下準備から。
「アプリケーション/AppleScript」にある、 「スクリプトエディタ」というアプリケーションを開く。 これがAppleScriptを作るのに使うソフトだ(今回初めていじった)。 起動したら、「ファイル」→「新規」を選ぶと新しい書類が開く。もちろん「リンゴマーク+N」でもいい。

script_editor.png

開いた真っ白なファイルに、下に書くソースコードをコピペして、 「ファイル」→「別名で保存」をし、上に書いた「プラグインフォルダ」に入れて 「プラグインを再読み込み」すれば終わりですよ超簡単!

ということでまず1~8。 これらは単に選択部分を開始タグと終了タグで挟んでやればいい。 いろいろ検討した結果、ソースは下のようになった。短いね。

property theElement : "strong"

on convert_lines(theLines)
set startTag to "<" & theElement & ">"
set endTag to "</" & theElement & ">"
set theResult to startTag & theLines & endTag
return theResult
end convert_lines

中身はどうでもいいので説明は略。 重要なのは、他のタグにも使い回したいので、1行目でタグの中身を定義しているところ。 この太字のstrongの部分を書き換え(例えばbに)、 ファイルを別名で保存すれば、他のタグ用のものとして使えてしまうのだ。

ということで、一気にstrong、b、em、h1、h2、h3、p、blockquoteまで8つ済んだ。 しかし個人的には、「p」と「blockquote」は選択部分の前後ではなく上下にタグを置きたいので、 以下のようにして使ってる。 こだわらない人は上のでいいでしょう。

property theElement : "p"

on convert_lines(theLines)
set unixLF to ASCII character 10
set startTag to "<" & theElement & ">"
set endTag to "</" & theElement & ">"
set theResult to startTag & unixLF & theLines & unixLF & endTag
return theResult
end convert_lines

「unixLF」として改行を2つ入れただけ。 これも例によってpのところをblockquoteに書き換えれば終了。

次は10と11。番号無しリストと番号付きリスト。 データは改行区切りでずらずらと並べておく。

property ListTag : "ul"
property ItemTag : "li"

-- All you need to change are the items above.

on convert_lines(theLines)
set startTag to "<" & ListTag & ">"
set endTag to "</" & ListTag & ">"
set startItemTag to "<" & ItemTag & ">"
set endItemTag to "</" & ItemTag & ">"
set unixLF to ASCII character 10

--text形式にしないとparagraph数をcountできない
set theText to theLines as text
set numOfPara to count paragraphs of theText

--開始タグ
set theResult to startTag & unixLF

--パラグラフの数だけループ
repeat with paraIndex from 1 to numOfPara
--text形式にすると改行コード取れる
set theContent to paragraph paraIndex of theText
set theLine to tab & startItemTag & theContent & endItemTag & unixLF
set theResult to theResult & theLine
end repeat
--終了タグ
set theResult to theResult & endTag & unixLF
return theResult
end convert_lines

ファイルにコピペしたら、名前を付けて保存するのは上と同じ。 改行区切りのデータを選択し、今作ったボタンを押せば、 めでたく番号無しのリストになるようにタグ整形される。 これもulolに書き換えれば番号付きリストになる。 ということで、9、10終了。

最後に表(table)を作る。 いろいろ苦労したが、ソースは以下のような感じになった。

property TableTag : "table"
property ListTag : "tr"
property ItemTag : "td"

-- All you need to change are the items above.

on convert_lines(theLines)
set unixLF to ASCII character 10

--text形式にしないとparagraph数をcountできない
set theText to theLines as text
set numOfPara to count paragraphs of theText

set theResult to "<" & TableTag & ">" & unixLF

--tab区切りと明示し
set svDelimiter to text item delimiters of AppleScript
set AppleScript's text item delimiters to tab

--行数ループ
repeat with paraIndex from 1 to numOfPara
set theLine to tab & "<" & ListTag & ">" & unixLF & tab
--text形式にすると改行コードが取れる
set theContent to paragraph paraIndex of theText

--tab区切りで項目数をカウント
set numOfItem to count text item of theContent

--項目数ループ
repeat with ItemIndex from 1 to numOfItem
set theLine to theLine & tab & "<" & ItemTag & ">" & text item ItemIndex of theContent & "</" & ItemTag & ">" & unixLF & tab
end repeat
set theLine to theLine & "</" & ListTag & ">" & unixLF

set theResult to theResult & theLine

end repeat

--区切り文字を戻す
set text item delimiters of AppleScript to svDelimiter

set theResult to theResult & "</" & TableTag & ">" & unixLF
return theResult
end convert_lines

データは行がタブ区切り、列は改行区切り。 例えばこんな感じ。

田中さん 11m
高橋さん 21m
谷さん 55m

これがこうなる。

<table>
<tr>
<td>田中さん</td>
<td>11m</td>
</tr>
<tr>
<td>高橋さん</td>
<td>21m</td>
</tr>
<tr>
<td>谷さん</td>
<td>55m</td>
</tr>
</table>

とりあえずこれでいろんなタグで囲めるようになった。 しかし本当に便利なのは、リンクの<a>タグなのだ。 デフォルトの「ブログパレット」では、Safariで開いているサイトにリンクするaタグを作ることができるが、 これを他のブラウザでも使えたら。あるいはクリップボードのデータからaタグが作れたら。 これが便利なんですよー。

ということで次回はこれを。(また終わらなかった・・・)