NAME

Wiki::Parser

TOP


SYNOPSIS

Wikiフォーマットの文字列をパースし、書式に対応したフックメソッドの呼び出しを行います。 Wiki::Parserを継承し、これらのフックメソッドをオーバーライドすることで 任意のフォーマットへの変換が可能です。

TOP


DESCRIPTION

動作原理

Wiki::ParserはWikiフォーマットの文字列を行単位にパースします。 まず、行中の書式をパースし、textやboldといったメソッドを呼び出し、 その戻り値を配列に格納しておきます。 次に、その行が見出しであるか、リストであるのか等を判断し、 行のパース結果を格納した配列を引数として、対応するl_xxxxメソッドを呼び出します。

Wiki::Parserのメソッド

new

 my $parser = Wiki::HTMLParser->new($wiki);

parse

引数に渡した文字列をパースします。

 $parser->parse($source);

サブクラスにて実装するメソッド

bold

ボールドの時に呼び出されます。オブジェクトを返すように実装します。 引数として文字列が渡されます。

 sub bold {
   my $self = shift;
   my $text = shift;
   return "<b>".Util::escapeHTML($text)."</b>";
 }

italic

イタリックの時に呼び出されます。オブジェクトを返すように実装します。 引数として文字列が渡されます。

 sub italic {
   my $self = shift;
   my $text = shift;
   return "<i>".Util::escapeHTML($text)."</i>";
 }

underline

下線の時に呼び出されます。オブジェクトを返すように実装します。 引数として文字列が渡されます。

 sub underline {
   my $self = shift;
   my $text = shift;
   return "<u>".Util::escapeHTML($text)."</u>";
 }

denialline

打ち消し線の時に呼び出されます。オブジェクトを返すように実装します。 引数として文字列が渡されます。

 sub underline {
   my $self = shift;
   my $text = shift;
   return "<s>".Util::escapeHTML($text)."</s>";
 }

url_anchor

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_anchor

Wikiページへのアンカの時に呼び出されます。引数としてページ名が渡されます。 また、別名アンカ([[Name|Page]]という形式)の場合は別名も渡されます。

text

どの書式にも該当しないプレーンなテキストの時に呼び出されます。

 sub text {
   my $self = shift;
   my $text = shift;
   return $text;
 }

plugin

プラグインの時に呼び出されます。オブジェクトを返すように実装します。 引数としてプラグイン呼び出し文字列が渡されます。 この文字列は

 コマンド [引数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";
 }

error

エラーメッセージ(<<と>>で囲まれた文字列)の場合に呼び出されます。 引数として記述されたメッセージが渡されます。

l_list

行が項目(行が*、**、***のいずれかで始まる場合)であるとき呼び出されます。 引数として項目のレベル(ネストの深さ)と、その行のパース結果を格納した配列のリファレンスが渡されます。

l_numlist

行が番号付き項目(行が+、++、+++のいずれかで始まる場合)であるとき呼び出されます。 引数として項目のレベル(ネストの深さ)と、その行のパース結果を格納した配列のリファレンスが渡されます。

l_headline

行が見出し(行が!、!!、!!!のいずれかで始まる場合)であるとき呼び出されます。 引数として見出しのレベルと、その行のパース結果を格納した配列のリファレンスが渡されます。

l_line

行が水平線であるとき呼び出されます。引数はありません。

 sub l_line {
   my $self = shift;
   $self->{result} .= "<hr>";
 }

l_paragraph

段落の区切り(空行のみの行)であるときに呼び出されます。

l_verbatim

行が整形済テキスト(行が空白かタブで始まる場合)であるときに呼び出されます。

l_table

行がテーブル(CSV)であるとき呼び出されます。

l_text

行がいずれの行書式にも合致しない場合に呼び出されます。 引数として、その行のパース結果を格納した配列のリファレンスが渡されます。

 sub l_text {
   my $self = shift;
   my $data = shift;
   $self->{result} .= join("",@$data);
 }

l_quotation

行が引用(行が``''で始まる場合)であるときに呼び出されます。

l_explanation

行が説明文(:説明項目:説明文 という形式の場合)であるときに呼び出されます。 引数として説明項目、説明文それぞれのパース結果を格納した配列のリファレンスが渡されます。

 sub l_explanation {
   my $self = shift;
   my $name = shift; # 項目名のパース結果
   my $desc = shift; # 説明文のパース結果
   ...
 }

l_plugin

パラグラフプラグインが記述されている場合に呼び出されます。 引数等の詳細はpluginメソッドの項を参照してください。

start_parse

パースの開始前に呼び出されます。前準備などがあればこのメソッドに実装しておきます。

end_parse

パースの終了後に呼び出されます。後処理などがあればこのメソッドに実装しておきます。

TOP


AUTHOR

Copyright 2002 - 2003 Naoki Takezoe <takezoe@netcentury.co.jp>

TOP