SYNOPSIS

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

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という形式)の場合は別名も渡されます。

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?という形式)の場合は別名も渡されます。

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

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

AUTHOR

Copyright 2002 - 2003 Naoki Takezoe <ADS283133@nifty.com>