################################################################################
#
# <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;