オリジナルは開始行番号に+/-を許容しないが、これを+1/-1とした場合に、前回の最終行番号+1/-1からの開始とする仕様にしてみる。 同様に+/-nの場合最終業番号+/-nからの開始としておく。 現在パッチ作成中。今の所作業中。 {{code Perl,8, 1 ############################################################ # #
ソースコードを整形出力するプラグインです。
## {{code コード種別,タブ桁数,開始行番号,WIDTHxHEIGHT] # ソースコード # }} ##
# 開始行番号をブランク、もしくは "0" にすれば行番号は表示されません。 #
# ############################################################ package plugin::code::Code; use strict; #=========================================================== # コンストラクタ #=========================================================== sub new { my $class = shift; my $self = {}; return bless $self,$class; } }} グローバル変数宣言と、mod_perl時のためにinitializeフックでの初期化が必要。 {{code Perl,8,0 use vars qw($maxline $place); #=========================================================== # フックメソッド(initialize用) #=========================================================== sub hook { $maxline = 1; $place = 1; } }} {{code Perl,8,+2 #=========================================================== # ブロックプラグイン #=========================================================== sub block { my $self = shift; my $wiki = shift; my $source = shift; my $type = shift; my $tab = shift; my $line = shift; my $size = shift; my ($width,$height) = ("",""); if ( $size ne "" && $size ne " " && $size =~ /^([0-9]+%?)?x?([0-9]+%?)?$/ ) { $width = "width:$1;" if ( $1 ne "" ); $height = "height:$2;" if ( $2 ne "" ); } my $html = ""; my $formatter = "plugin::code::Format::".$type; $type =~ /\W/ and $@ = "対応していないコード種別です。\"".&Util::escapeHTML($type)."\"" or eval ("use ".$formatter); # エラーが発生した場合クリーンアップ処理 if ( $@ ) { my $error = $@; $html = "".&Util::escapeHTML($formatter) ."の作成に失敗しました。発生したエラーは以下のとおりです。
$error"; } else { my $cf = $formatter->new($self); $html .= "\n
"; for(my $i=$line;$i<=$maxline;$i++){ $html .= "$i | \n";
}
}}
以上、行番号処理
{{code Perl,8,+
# ソース表示
$source =~ s/\t/$tabspace/g;
$html .= "$source | \n";
$html .= "