{{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-&gt;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);
             }
         }
     }
}}