2011-01 / 2011-01-23

前のエントリ: tarオプション/書庫追加(追記) [command]
次のエントリ: itemページのタイトルにカテゴリ表示 [chalow]

SyntaxHighlighter用に[src]の言語指定可能改造
2011-01-23-2 / カテゴリ: [perl][chalow] / [permlink]

--- chalow.20110122	2011-01-22 22:41:33.635539221 +0900
+++ chalow	2011-01-22 22:56:41.727087965 +0900
@@ -1296,6 +1296,7 @@
 my %escaped_string;
 my $num_of_escaped_src;
 my %escaped_src;
+my %escaped_src_type;
 my $num_of_escaped_plugin;
 my %escaped_plugin;
 
@@ -1315,8 +1316,9 @@
 
     ### ソースエスケープ - "&" や "<" などを置換し pre を付ける
     $num_of_escaped_src = 0;
-    $$strp =~ s!\[src\](.*?)\[/src\]!
-	$escaped_src{++$num_of_escaped_src} = $1,
+    $$strp =~ s!\[src(\s\w+)?\](.*?)\[/src\]!
+	$escaped_src{++$num_of_escaped_src} = $2,
+	$escaped_src_type{$num_of_escaped_src} = $1,
 	$escaped_src{$num_of_escaped_src} =~ s/&/&amp;/g,
 	$escaped_src{$num_of_escaped_src} =~ s/</&lt;/g,
 	$escaped_src{$num_of_escaped_src} =~ s/>/&gt;/g,
@@ -1336,7 +1338,7 @@
     $$strp =~ s|\x7\x13(\d+)\x3|eval($escaped_plugin{$1})|ge;
     ### ソースアンエスケープ - pre 追加
     # todo(SyntaxHilighter)
-    $$strp =~ s|\x6\x13(\d+)\x3|<pre class="brush:plain;">$escaped_src{$1}</pre>|g;
+    $$strp =~ s|\x6\x13(\d+)\x3|"<pre class=\"brush:".(length $escaped_src_type{$1}? $escaped_src_type{$1}: "plain").";\">$escaped_src{$1}</pre>"|eg;
     # <p>は使ってないので
     #$$strp =~ s|\x6\x13(\d+)\x3|</p><pre>$escaped_src{$1}</pre><p>|g;
     ### HTML アンエスケープ
こんな感じで。

んで、Changelogの方は
(src)
コード
(/src)
となってるのを
(src perl)
コード
(/src)
とか書けばオーケー
※ ()は実際は[]

まぁ簡単にいっちゃえば、/ foo/ があれば brush:foo、無ければ brush:plain に置換するための保持用変数とコードを追加。
というか、既存Changelogへの自動種別追記なんかできないから、全部手作業で追記したぞ(笑)

このエントリまで含めた時点での統計

全ソース指定
% grep "^.\[src" ChangeLog | wc -l
915

手作業で言語指定
% grep "^.\[src " ChangeLog | sed -e "s/[][]//g" | awk '{print $2}' |lv | wc -l
218

言語指定ランキング
% grep "^.\[src " ChangeLog | sed -e "s/[][]//g" | awk '{print $2}' |lv | sort | uniq -c | sort -r
    102 perl
     64 cpp
     19 bash
     13 xml
     12 diff
      5 js
      2 html
      1 java

やっぱperl多いな。cpp(というかC)が意外な多さだ。
というか、コマンド実行とかconfigが大半だったから、全体からすれば少ないけど。

あと、lispスタイルも欲しかったな…

というか、sed/awk/sort/uniq使ったの何年ぶりだろ。
Referrer (Inside): [2011-06-16-1]
前のエントリ: tarオプション/書庫追加(追記) [command]
次のエントリ: itemページのタイトルにカテゴリ表示 [chalow]

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12