################################################################################ # # <p>preタグを出力する複数行プラグイン。</p> # <pre> # {{pre # ここに記述した内容は整形済テキストとして出力されます。 # 引数は複数行に渡って記述することができます。 # }} # </pre> # <p>表示は次のようになります。</p> # <pre> # ここに記述した内容は整形済テキストとして出力されます。 # 引数は複数行に渡って記述することができます。 # </pre> # <p><code>num</code>オプションをつけると行番号を表示できます。</p> # <pre> # {{pre num # numオプションをつけると行番号を表示できます。 # 行番号は最大行数にあわせてゼロパディングされます。 # }} # </pre> # <p>この場合の表示は次のようになります。</p> # <pre> # 1|numオプションをつけると行番号を表示できます。 # 2|行番号は最大行数にあわせてゼロパディングされます。 # </pre> # ################################################################################ package plugin::core::Pre; #============================================================================== # コンストラクタ #============================================================================== sub new { my $class = shift; my $self = {}; return bless $self,$class; } #============================================================================== # ブロックメソッド #============================================================================== sub block { my $self = shift; my $wiki = shift; my $text = shift; my $option = shift; my $count = 1; my $buf = "<pre>"; my @lines = split(/\n/, $text); my $len = length($#lines + 1); foreach my $line (@lines){ if($option eq "num"){ $buf .= sprintf("%0${len}d", $count) . "|"; } $buf .= Util::escapeHTML($line) . "\n"; $count++; } return $buf . "</pre>"; } 1;