記法タグを定義する

記法タグはユーザーが自由に定義することができます。よく使う表記やリンクを登録すると、より一層便利に使うことができます*1

登録方法

ブログの管理画面から「その他の設定」→「記法タグ」と選択するとブログ固有の記法タグ定義画面になります。

info/textparser_tags.txtの書き換えは推奨されません*2。もし複数のブログがあり、全体で同じ記法を使いたい場合は「info/textparser_site_tags.txt」というファイルを作成し、その中に定義してください。

*2 : このファイルを書き換えるとアップデート時に手間がふえてしまいます。

タグ定義の書式について

定義済の記法は「info/textparser_tags.txt」にあります。

基本の設定

google  = Google検索,       UTF-8,  http://www.google.co.jp/search?lr=lang_ja&ie=utf-8&oe=utf-8&q=
keyword = はてなキーワード, EUC-JP, http://d.hatena.ne.jp/keyword/
g       = >google

左がタグ名、次がタイトル、文字コード、URLと並びます。[google:ブログ]としたとき「ブログ」の部分が、指定した文字コードでエンコードされURLの最後に追加されます。この書式がもっとも一般的なものです。3行目のタグ「g」はタグ「google」へのエイリアス(別名)となります。エイリアスは1階層しか辿らないことに注意してください。

  • 相対パスを書いた場合は、スクリプトのあるディレクトリからの相対パスになります。
  • タグの指定は右から順に省略できます。プラグインタグのタイトルのみの指定でよく利用しています。
  • 2つめ以降の引数はリンクテキストとして解釈されます。リンク引数より多い引数はすべてリンクテキストとして扱われます。
  • 文字コードの指定は大文字で書きます。「小文字のみ」の文字列は特殊な設定とみなされます。

受け取る引数を指定する

URLの前に受け取る引数の数を書くことで、引数を指定できます。このとき $1 $2 ... $n が順に引数として扱われます。

hatena:id = はてなダイアリー, ASCII, 1, http://d.hatena.ne.jp/$1/
hatena:d  = はてなダイアリー, ASCII, 2, http://d.hatena.ne.jp/$1/$2
[hatena:id:xzz]         → http://d.hatena.ne.jp/xzz/
[hatena:d:xzz:20060707] → http://d.hatena.ne.jp/xzz/20060707

引数の数を省略した場合は、引数=1、リンクURL末尾に「$1」を付加したものとして扱われます。

引数の数によりタグの定義を変える

タグ名のうしろにスペースなしで「#引数の数」と指定します。

hatena:id   = はてなダイアリー, EUC-JP, 1, http://d.hatena.ne.jp/$1/       (1)
hatena:id#2 = はてなダイアリー, EUC-JP, 2, http://d.hatena.ne.jp/$1/$2     (2)
hatena:id#3 = はてなダイアリー, EUC-JP, 3, http://d.hatena.ne.jp/$1/$2/$3  (3)

引数の数を指定すると、引数の数が一致するときのみ該当タグが呼ばれます。一致しない場合は、指定なしのタグが呼ばれます。引数の数指定のあるタグのみを書くことができません。注意してほしいのは、右側の受け取る引数指定はあくまでURL置き換え時に処理する引数の数を指定するもので、タグ選別には関与しないということです*3

例えばこの例では、次のように対応します。

[hatena:id:xzz]                    → (1)
[hatena:id:xzz:20060707]           → (2)
[hatena:id:xzz:20060707:p1]        → (3)
[hatena:id:xzz:20060707:p1:xxx]    → (1)

「末尾がスペース」だったり非ASCII文字(全角文字)を含む引数があると、それ以降はカウントされません。これはリンクテキストが、引数として解釈されないための措置です。

[hatena:id:xzz:リンク]             → (1)
[hatena:id:xzz:20060707 ]          → (1)
[hatena:id:xzz:20060707:p1:リンク] → (3)

もしそれらを含めた引数の数を判別したい場合は「##3」などとします。

*3 : 溢れた引数がリンク名として使われることからこのような仕組みになっています

HTMLタグ置き換え機能

URL部分が<で始まるとき、そのまま置換が行われます。

mtex = mimeTeX, ASCII, 1, <img src="$0mimetex/mimetex.cgi?$1" alt="$1" class="tex">
test = block-tag-sample, ASCII, 2, block:
<table>
<tr><th>#1</th><td>#2</td></tr>
</table>

block:指定は、置き換え部分(URL部)を複数行に渡って書くための機能です。次の行から空行までを置き換え部分として認識されます。なお、置換時には改行は無視され1行に展開されます。

「#1 #2」はURIエンコードされていないそのままの引数と置換するための変数です。これは検索など他のタグ定義でも使用できます。(使用するケースはないと思いますが)

単一タグ定義(HTMLタグへの置換)

HTMLタグへの置換定義を行うことができます。

pre    = html:span.pre
em     = html:em
hidden = html:span.hidden

html:識別子に続き、tag名.クラス名となっています。さらにスペースに続けて追加属性を書くこともできます。

hidden = html:span.hidden title="マウスで選択"

画像リンク記法を定義する

画像記法は特定の場所においてある「画像へのリンク」を簡単に実現するためのものです。画像プラグインにより実現されています。

まずユーザー定義タグを用いてタグを指定します。オプション(通常文字コードを指定する部分)に image と書くのがポイントです。

myimg       = 画像, image, 1, http://example.jp/image/$1_small.jpg
myimg#large = 画像, image, 1, http://example.jp/image/$1_large.jpg
myimg#link  = 画像, image, 1, http://example.jp/image/$1.jpg

最初は通常の表示画像、myimg#largeには大きな画像指定時の表示画像、#linkにはリンク先アドレスをそれぞれ指定します。受け取る引数の数は、すべて同じに設定してください。

この状態で、myimgタグは次のように置き換わります。

[myimg:test]
[myimg:test:large]
[myimg:test:たいとる]
[myimg:test:w50:たいとる]
<a href="http://example.jp/image/test.jpg" class="myimg">
<img alt="test" title="test" src="http://example.jp/image/test_small.jpg"></a>

<a href="http://example.jp/image/test.jpg" class="myimg">
<img alt="test" title="test" src="http://example.jp/image/test_large.jpg"></a>

<a href="http://example.jp/image/test.jpg" class="myimg">
<img alt="てすと" title="てすと" src="http://example.jp/image/test_small.jpg"></a>

<a href="http://example.jp/image/test.jpg" class="myimg">
<img alt="てすと" title="てすと" src="http://example.jp/image/test_small.jpg" width="50"></a>

マクロの定義

マクロは複数行に展開される特殊なタグです。

以下は、見出しに章番号を付ける [*section_number] マクロの定義例です。

*section_number
::section_number=1
  • "*"(アスタリタク)で宣言を始めます。
  • 空行までがマクロとして認識されます。
  • マクロ引数は「#0」として展開できます。
*toc
<toc>#0</toc>
[*toc:depth=2]  → <toc>depth=2</toc>