2008/07/26

Perlのコードをハイライトしてみる

Blogger Syntax Highlighterウィジェットをちょっと弄ってみました。

まぁ、やったことはウィジェット (JavaScript) の最後の方にあるRubyを処理する部分をコピーして、次のページを参考に内容を書き換えてRubyを処理する部分の下に追加しただけなんですけど。




正規表現がよくわかんないので、たぶんPerlの変数を上手く引っ掛けられないと思いますが、今後直そうと思います。

テストで表示させるのに "Hello, world!" ではつまらないしPerlの変数も出てこないので、オープンストリートマップで国土数値情報インポート作業用の資料を作る際に、ファイルをソートするために使った短いスクリプトが残っていたので、それにしました。

preタグに class="perl" を指定して、果たして上手くいくのか...

  1. #!/usr/bin/perl  
  2.   
  3. #####  
  4. #  
  5. # データ調査用スクリプト UTF8ファイルのSORT  
  6. #  
  7. # KSJ2 Railway Data 2007 - EB02 (Railway Line)  
  8. # 国土数値情報(鉄道データ)平成19年 国土交通省 - EB02 (鉄道路線)  
  9. #  
  10. # Files  
  11. #   Input : N02-07_EB02-r1.osm  
  12. #   Output : N02-07_EB02-r1-sort.osm  
  13. #      
  14. #####  
  15.   
  16.   
  17. use strict;  
  18. use warnings;  
  19. use encoding "utf8";  
  20. use Encode;  
  21. use open IO => "utf8";  
  22.   
  23.   
  24. sub main() {  
  25.   
  26.  open(IN, "<N02-07_EB02-r1.osm");  
  27.  open(OUT, ">N02-07_EB02-r1-sort.osm");  
  28.   
  29.  my $i = 0;  
  30.  my @file = <IN>;  
  31.  my @array = sort @file;  
  32.   
  33.  foreach my $line(@array) {  
  34.    print OUT $line;  
  35.    $i++;  
  36.  }  
  37.   
  38.  close IN;  
  39.  close OUT;  
  40.   
  41.  printf "Output %d records\n"$i;     
  42.   
  43. }  
  44.   
  45.   
  46.   
  47.   
  48. # run this script.  
  49.   
  50. main();  


うーん、やっと出た。

予想通り最初は正規表現の所がおかしくて、JavaScriptの実行自体がエラーになり、全くのプレーンテキストしか表示されませんでした。その後、キーワードや関数の名前を登録している部分、それに対応するCSSなども修正。これからも少しづつ直す所が出てきそうな気がします。

でも、とりあえず今の時点で動いているものを貼っておきます。



桁番号表示のオプションは TeraPad みたいなものを勝手に想像していたので、ちょっとガッカリ。コードを見るにはメニューにある + expand source のリンクをクリックして下さい。

私はこれをウィジェット (JavaScript) の最後の方にある ['ruby','rails','ror']; で終わっている行の次に追加しています。

元のsyntaxhighlighterのページには"Code License: GNU Lesser General Public License"と書いてあるので、この部分もGLGPLということかな?  よくわからんけど...

2008年7月28日 追記

Perl対応部分を組み込んだウィジェットの追加ボタンを作成してみました。

おかげで、[設定] → [フォーマット] → 改行の変換を「いいえ」にして、自分でbrタグを入力して改行させなければいけなくなりました。「はい」だとウィジェットの中に在る改行までbrタグに変換されてしまうので...
Atom