A_single_file_wiki_wifky2.png

ブロック文法プラグインについて

段落単位の文法を規定するプラグインです。

$::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)

で変換する必要があります。

|

Designed for @nifty.