{{title コード整形プラグイン:Diffサンプル}} ※Wiki.pm の差分(blockプラグイン用の修正パッチ) {{code Diff,4,true --- Wiki.pm.org Wed Apr 27 21:14:12 2005 +++ Wiki.pm Wed Apr 27 23:49:52 2005 @@ -486,6 +486,28 @@ #============================================================================== # <p> +# ブロックプラグインを登録します。プラグインの出力タイプには"WIKI"または"HTML"を指定します。 +# 省略した場合は"HTML"を指定したものとみなされます。 +# </p> +# <pre> +# $wiki->add_block_plugin(プラグイン名,プラグインのクラス名,プラグインの出力タイプ); +# </pre> +#============================================================================== +sub add_block_plugin { + my $self = shift; + my $name = shift; + my $class = shift; + my $format = shift; + + if($format eq ""){ + $format = "HTML"; + } + + $self->{"plugin"}->{$name} = {CLASS=>$class,TYPE=>'block',FORMAT=>$format}; +} + +#============================================================================== +# <p> # プラグインの情報を取得します # </p> # <pre> @@ -579,7 +601,7 @@ #=============================================================================== # <p> -# インラインプラグイン、パラグラフプラグインの呼び出し(内部処理用の関数)。 +# インラインプラグイン、パラグラフプラグイン、ブロックプラグインの呼び出し(内部処理用の関数)。 # 初期のメソッドのため命名規則(privateメソッドのメソッド名は_から始める) # に従っていません。 # </p> @@ -588,6 +610,7 @@ my $self = shift; my $plugin = shift; my $parser = shift; + my $source = shift; if(defined($plugin->{error}) && $plugin->{error} ne ""){ return "<font class=\"error\">".$plugin->{error}."</font>"; @@ -609,16 +632,22 @@ my @result = $parser->parse_line($obj->inline($self,@args)); undef($obj->{parser}); # パーサの参照を解放 return @result; - } else { + } elsif($info->{TYPE} eq "paragraph"){ $parser->parse($obj->paragraph($self,@args)); undef($obj->{parser}); # パーサの参照を解放 return undef; + } else { + $parser->parse($obj->block($self,$source,@args)); + undef($obj->{parser}); # パーサの参照を解放 + return undef; } } else { if($info->{TYPE} eq "inline"){ return $obj->inline($self,@args); - } else { + } elsif($info->{TYPE} eq "paragraph"){ return $obj->paragraph($self,@args); + } else { + return $obj->block($self,$source,@args); } } } }} |