2011-06 / 2011-06-16

前のエントリ: 日記内のリスト対応(割と適当)してみた [chalow]
次のエントリ: 横浜戦 横浜スタジアム [diary]

SyntaxHighlighter用の書式で開始行数指定とハイライトを有効にしてみた
2011-06-16-1 / カテゴリ: [chalow] / [permlink]

最近こればっかだな

SyntaxHighlighter 3.0.83自身は、
<pre class="brush: text; first-line: 2; highlighter: [2,3,4]">
...
</pre>
とかで変更できるので、chalow+SyntaxHighlighterにも対応させてみた。

2,4行目をハイライト (h:2,4)
1行目
2行目
3行目
4行目

開始2行目で、2,3行目をハイライト (f:2 h:2,3)
2行目
3行目
4行目
5行目

言語指定で (perl f:3 h:4)
while (<>) {
  print unless /^$/;
}

こんな感じ。ベースは→[2011-01-23-2]
--- chalow	(revision 1845)
+++ chalow	(revision 1846)
@@ -1359,7 +1359,7 @@
 
     ### ソースエスケープ - "&" や "<" などを置換し pre を付ける
     $num_of_escaped_src = 0;
-    $$strp =~ s!\[src(\s\w+)?\](.*?)\[/src\]!
+    $$strp =~ s!\[src(?:\s([\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,
@@ -1381,14 +1381,33 @@
     $$strp =~ s|\x7\x13(\d+)\x3|eval($escaped_plugin{$1})|ge;
     ### ソースアンエスケープ - pre 追加
     # todo(SyntaxHilighter)
-    $$strp =~ s|\x6\x13(\d+)\x3|"<pre class=\"brush:".(length $escaped_src_type{$1}? $escaped_src_type{$1}: "plain").";\">$escaped_src{$1}</pre>"|eg;
+    $$strp =~ s|\x6\x13(\d+)\x3|"<pre class=\"brush: ".get_syntax_opt($escaped_src_type{$1}).";\">$escaped_src{$1}</pre>"|eg;
     # <p>は使ってないので
     #$$strp =~ s|\x6\x13(\d+)\x3|</p><pre>$escaped_src{$1}</pre><p>|g;
     ### HTML アンエスケープ
     $$strp =~ s|\x5\x13(\d+)\x3|$escaped_string{$1}|g;
 }
 
+sub get_syntax_opt {
+  my $lang = "plain";
+  my @opts;
+  for (split /\s+/, shift) {
+    if (/^[^:]+$/) {
+      $lang = $_;
+    }
+    if (/f:(\d+)/) {
+      push @opts, "first-line: $1";
+    }
+    if (/h:([\d,]+)/) {
+      my $t = $1;
+      push @opts, "highlight: [$1]";
+    }
+  }
+  unshift @opts, $lang;
+  return join "; ", @opts;
+}
 
+
 ### inside referrer のリンク作成
 sub get_inside_ref {
     my ($id) = @_;

ついでにツールバーも消した。
前のエントリ: 日記内のリスト対応(割と適当)してみた [chalow]
次のエントリ: 横浜戦 横浜スタジアム [diary]

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