Text::VimColor を使って chalow のソース表示に色をつける
			  ソースコードを色付けする Perl モジュール Text::VimColor を使って chalow 表記の[src]... [/src]を色付けする方法.
- ソースコードを色付けする関数
  これを chalow の適当なところに貼り付けておく.cl.conf でも OK.
  tab 幅なんかはお好みで.
  PHP ファイルの場合に特別な処理をしているのは,PHP の場合は PHP タグ (<?php ... ?>) に囲まれていないと
  ソースに色をつけてくれない.そのためタグがついていない場合は一回タグをつけてあげてる.
  ASP とかもそうだと思う.
sub highlight {
    my ($filetype, $string) = @_;
    my $add_php_tag = 0;
    $filetype =~ s/^\s*(.*?)\s*$/$1/s;
    $string =~ s/^\s*(.*?)\s*$/$1/s;
    # PHP ファイルで PHP タグ (<?php...?>) がない場合は PHP タグを付加
    if ($filetype eq 'php') {
        if ($string !~ m/<\?/) {
            $string = "<?php\n" . $string . "\n?>";
            $add_php_tag = 1;
        }
    }
    my $syntax = Text::VimColor->new(
        filetype => $filetype,
        string => $string,
    );
    my $html = $syntax->html;
    chomp $html;
    # PHP ファイルで PHP タグを付加した場合は PHP タグを削除する
    if ($add_php_tag == 1) {
        $html =~ s!^<span class="synSpecial"><\?php</span>\n!!m;
        $html =~ s!^<span class="synSpecial">\?></span>!!m;
    }
    # tab を   4 つ分に
    $html =~ s/\t/{' ' x 4}/ge;
    # 2 つ以上のスペースを   に
    $html =~ s/(  +)/{' ' x length($1)}/ge;
    # 行末に <br /> を付加
    $html =~ s/$/<br \/>/mg;
    return $html;
}
- chalow を編集
  chalow には以下のパッチをあてる.
--- chalow-orig 2005-08-21 07:35:31.000000000 +0200
+++ chalow      2006-01-13 23:47:34.806132000 +0100
@@ -13,6 +13,7 @@
 use Time::Local;               # for 曜日
 use HTML::Template;
 use ChangeLogReader;
+use Text::VimColor;
 my $version = '1.0rc6';
@@ -1292,11 +1293,8 @@
     ### ソースエスケープ - "&" や "<" などを置換し pre を付ける
     $num_of_escaped_src = 0;
-    $$strp =~ s!\[src\](.*?)\[/src\]!
-       $escaped_src{++$num_of_escaped_src} = $1,
-       $escaped_src{$num_of_escaped_src} =~ s/&/&/g,
-       $escaped_src{$num_of_escaped_src} =~ s/</</g,
-       $escaped_src{$num_of_escaped_src} =~ s/>/>/g,
+    $$strp =~ s!\[src(.+?)?\](.*?)\[/src\]!
+       $escaped_src{++$num_of_escaped_src} = highlight($1, $2),
        sprintf("\x6\x13%d\x3", $num_of_escaped_src)!gsmxe;
     ### プラグインエスケープ
@@ -1312,7 +1310,7 @@
     ### プラグインアンエスケープ - 実行!
     $$strp =~ s|\x7\x13(\d+)\x3|eval($escaped_plugin{$1})|ge;
     ### ソースアンエスケープ - pre 追加
-    $$strp =~ s|\x6\x13(\d+)\x3|<pre>$escaped_src{$1}</pre>|g;
+    $$strp =~ s|\x6\x13(\d+)\x3|<p class="code">$escaped_src{$1}</p>|g;
     ### HTML アンエスケープ
     $$strp =~ s|\x5\x13(\d+)\x3|$escaped_string{$1}|g;
 }
- 使い方
  色付けするソースの種類がわからないといけないので,[src]記法を拡張した.
  書式は
[src ソースの種類]
:
[/src]
  ソースの種類を書く必要がある.これだけで OK.
  ソースの種類は vim が理解できるもの.Vim 6.3 の場合は
/usr/local/share/vim/vim63/syntax
  ここにあるものだと思う.ちなみに 408 種類ある.
  そして,これに対応した css ファイルは
Text-VimColor-0.09/lib/Text/VimColor/light.css
  にあるので,これを適当に編集して使う.
  あと,Text::VimColor を読んでみると vim を起動していることがわかった.
  なるほどね…
  サンプルはこのサイト.
			
			

 
		 
		 
		 
		 
	