2006年07月03日

 ソースコード表示支援




ソースコード表示用スタイル

.src_code {
    margin-left:20px;
    margin-right:20px;
    border-style:solid;
    border-width:1px;
    padding:10px;
    width:auto;
    background-color:#E6E6FA;
    font-weight:bold;
    font-family: "MS ゴシック"
}

lib/MT/Builder.pm を変更

                if ($ph) {
                    $out = $ph->($ctx, \%args, $out);
                }

#ここから追加コード
		my @line = split(/\n/, $out);
		my $i;
		my $flg = 0;
		for ($i = 0; $i <= $#line; $i++) {
			if ($line[$i] =~ /^\@S/ ) {
				$flg = 1;
				$line[$i] = "<PRE class=\"src_code\">";
				next;
			}
			if ($line[$i] =~ /^<p>\@S/ ) {
				$flg = 1;
				$line[$i] = "<PRE class=\"src_code\">";
				next;
			}
			if ($line[$i] =~ /^\@E/ ) {
				$flg = 0;
				$line[$i] = "</PRE>";
				next;
			}
			if ( $flg == 1 ) {
				$line[$i] =~ s/^<p>//g;
				$line[$i] =~ s/<\/p>//g;
				$line[$i] =~ s/<br \/>//g;
				$line[$i] =~ s/&/&amp;/g;
				$line[$i] =~ s/</&lt;/g;
				$line[$i] =~ s/>/&gt;/g;
			}
		}
		for ($i = 0; $i <= $#line; $i++) {
			if ($line[$i] =~ /\[\[/ ) {
				$line[$i] =~ s/\[\[/<SPAN style='color:red;font-weight:bold'>/g;
			}
			if ($line[$i] =~ /\]\]/ ) {
				$line[$i] =~ s/\]\]/<\/SPAN>/g;
			}
		}
		$out = join("\n", @line);
#ここまで追加コード

                $res .= $out;