Wiki記法でのコードのカラー化機能装備願い [software]
id:jkondo さん、どうか VimColor 記法を Text::Hatena に入れてくんなまし、と id:naoya 氏の方角に向かって祈りをささげていたのですが、なかなか実装されないのでパッチ作ってみた。Text::VimColor 記法がほしいよぉ SQLAlchemy Database Engines 日記。 (TokuLog)
Text::Tracにもコードのカラー化がなく寂しい思いをしたことがあって、以下のやっつけコードでその場をしのいでいました。Text::Highlightより、VimColorの方が多くの言語に対応していてよいかな。上記のTokuhiromさんの祈りがmizzyさんにも届きますように。
our %_conv = ( perl => 'Perl', c => 'CPP', cpp => 'CPP', html => 'HTML', ); sub parse { my ( $self, $l ) = @_; my $c = $self->{context}; my $pattern = $self->pattern; $l =~ /$pattern/ or return $l; my $processor; if ( $l =~ /^{{{$/ ){ if ( $c->hasnext and $c->nextline =~ /^#!([\w\-_\/]+)$/ ) { $processor = $1; $processor =~ s/\/([\w\-\_]+)$/$1/; $c->htmllines('<div class="code">'); $c->shiftline; } else { $c->htmllines('<pre class="wiki">'); } } my $code = ''; while($c->hasnext){ my $l = $c->shiftline; if ( $l =~ /^}}}$/) { if ( $processor ) { require Text::Highlight; my $th = Text::Highlight->new( wrapper => "<pre>%s</pre>\n" ); $c->htmllines( $th->highlight($_conv{lc $processor}, $code) ); $c->htmllines('</div>'); } else { $c->htmllines('</pre>'); } last; } else { if ( $processor ) { $code .= "$l\n"; } else { $c->htmllines( $l ); } } } return; }
コメント 0