ブロック文法プラグインについて
段落単位の文法を規定するプラグインです。
$::block_syntax_plugin{'010_hogehoge'} = sub { 処理内容 };
のように定義します。
ハッシュ %::block_syntax_plugin には、 ブロック文法実現のために、 テキストを処理する関数へのリファレンスが格納されています。
処理はハッシュのキーの辞書順に行われますので、 キーの先頭の数字3桁に適当な数字を選ぶことにより、 任意のタイミングで置換処理を実行させることができます。
キー文字列 | 設定値 | 処理内容 |
---|---|---|
100_list | \&block_listing | 「* 〜」「+ 〜」によるリスト |
200_definition | \&block_definition | 「:〜」「::〜」による定義 |
300_midashi1 | \&block_midashi1 | <<…>> による見出し |
400_midashi2 | \&block_midashi2 | !!!… による見出し |
500_centering | \&block_centering | >>…<< によるセンタリング |
600_quoting | \&block_quoting | ""… による引用 |
700_table | \&block_table | ||〜 | による表 |
800_htmltag | \&block_htmltag | ブロック系の素HTML |
900_seperator | \&block_separator | 「---」⇒ <hr> |
990_normal | \&block_normal | 普通の段落表示 |
プラグイン関数に要求される仕様
第一引数 | テキスト文字列 既にサニタイズ済み。 |
第二引数 | セッション情報を含むハッシュへのリファレンス。 |
戻り値 | 渡されたブロックが自関数の対応ブロックであり、処理を実施した場合、非0 を返す。 そうすると、後のブロック文法関数では評価されない。 渡されたブロックが自関数の対応ブロックでない場合、0 を返す。 そうすると、後のブロック文法関数に処理・データが引き渡される。 |
ブロック文法プラグインでは、もはや置換処理は行いません。 アクションプラグインのように与えられた文字列を適当に処理し、 &::puts , &::putenc などを使い、出力処理まで実行してください。
なお、そのままではインライン文法は処理されませんので、 必要に応じて、ブロックプラグイン関数内で、
変換後文字列 = &::preprocess(被変換文字列,$session)
で変換する必要があります。
|