Wiki::Parser
Wikiフォーマットの文字列をパースし、書式に対応したフックメソッドの呼び出しを行います。 Wiki::Parserを継承し、これらのフックメソッドをオーバーライドすることで 任意のフォーマットへの変換が可能です。
Wiki::ParserはWikiフォーマットの文字列を行単位にパースします。 まず、行中の書式をパースし、textやboldといったメソッドを呼び出し、 その戻り値を配列に格納しておきます。 次に、その行が見出しであるか、リストであるのか等を判断し、 行のパース結果を格納した配列を引数として、対応するl_xxxxメソッドを呼び出します。
my $parser = Wiki::HTMLParser->new($wiki);
引数に渡した文字列をパースします。
$parser->parse($source);
ボールドの時に呼び出されます。オブジェクトを返すように実装します。 引数として文字列が渡されます。
sub bold { my $self = shift; my $text = shift; return "<b>".Util::escapeHTML($text)."</b>"; }
イタリックの時に呼び出されます。オブジェクトを返すように実装します。 引数として文字列が渡されます。
sub italic { my $self = shift; my $text = shift; return "<i>".Util::escapeHTML($text)."</i>"; }
下線の時に呼び出されます。オブジェクトを返すように実装します。 引数として文字列が渡されます。
sub underline { my $self = shift; my $text = shift; return "<u>".Util::escapeHTML($text)."</u>"; }
打ち消し線の時に呼び出されます。オブジェクトを返すように実装します。 引数として文字列が渡されます。
sub underline { my $self = shift; my $text = shift; return "<s>".Util::escapeHTML($text)."</s>"; }
URLアンカの時に呼び出されます。引数としてURLが渡されます。 また、別名アンカ([Name|URL]という形式)の場合は別名も渡されます。
sub url_anchor { my $self = shift; my $url = shift; my $name = shift; if($name eq ""){ $name = $url; } return "<a href='$url'>".Util::escapeHTML($name)."</a>"; }
Wikiページへのアンカの時に呼び出されます。引数としてページ名が渡されます。 また、別名アンカ([[Name|Page]]という形式)の場合は別名も渡されます。
どの書式にも該当しないプレーンなテキストの時に呼び出されます。
sub text { my $self = shift; my $text = shift; return $text; }
プラグインの時に呼び出されます。オブジェクトを返すように実装します。 引数としてプラグイン呼び出し文字列が渡されます。 この文字列は
コマンド [引数1[,引数2[,...]]]
という形式になっており、Wiki#parse_inline_pluginメソッドで分割することができます。
sub plugin { my $self = shift; my $text = shift; my $info = $self->{wiki}->parse_inline_plugin($text); my $buf = "コマンド:".Util::escapeHTML($info->{command})." - 引数:"; foreach(@{$info->{args}}){ $buf .= Util.escapeHTML($_)." "; } return $buf."<br>\n"; }
行が項目(行が*、**、***のいずれかで始まる場合)であるとき呼び出されます。 引数として項目のレベル(ネストの深さ)と、その行のパース結果を格納した配列のリファレンスが渡されます。
行が見出し(行が!、!!、!!!のいずれかで始まる場合)であるとき呼び出されます。 引数として見出しのレベルと、その行のパース結果を格納した配列のリファレンスが渡されます。
行が水平線であるとき呼び出されます。引数はありません。
sub l_line { my $self = shift; $self->{result} .= "<hr>"; }
段落の区切り(空行のみの行)であるときに呼び出されます。
行が整形済テキスト(行が空白かタブで始まる場合)であるときに呼び出されます。
行がテーブル(CSV)であるとき呼び出されます。
行がいずれの行書式にも合致しない場合に呼び出されます。 引数として、その行のパース結果を格納した配列のリファレンスが渡されます。
sub l_text { my $self = shift; my $data = shift; $self->{result} .= join("",@$data); }
行が引用(行が``''で始まる場合)であるときに呼び出されます。
行が説明文(:説明項目:説明文 という形式の場合)であるときに呼び出されます。 引数として説明項目、説明文それぞれのパース結果を格納した配列のリファレンスが渡されます。
sub l_explanation { my $self = shift; my $name = shift; # 項目名のパース結果 my $desc = shift; # 説明文のパース結果 ... }
パースの開始前に呼び出されます。前準備などがあればこのメソッドに実装しておきます。
パースの終了後に呼び出されます。後処理などがあればこのメソッドに実装しておきます。
Copyright 2002 - 2003 Naoki Takezoe <takezoe@netcentury.co.jp>