ただのにっき
2006-12-28(木) [長年日記]
■ GTD的仕事納め
■ sfmltoj.rbを最近のSF.netに対応させる
SourceForge.netのメーリングリストアーカイブで日本語を表示させるsfmltoj.rbが、最近のSF.netリニューアルに追従していないと指摘されたので、ちょっとハック。むとうさんは困ってないのかしら? あとでメールしておこう。
--- sfmltoj.rb.orig 2006-01-10 09:14:47.000000000 +0900 +++ sfmltoj.rb 2006-12-28 15:09:51.000000000 +0900 @@ -82,10 +82,6 @@ # # headers -str.gsub!(/html lang="en"/, 'html lang="ja"') -str.gsub!(/<head>/, %Q[<head> -<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> -]) str.gsub!(/href="\//, 'href="http://sourceforge.net/') # @@ -110,19 +106,17 @@ # str.gsub!(/\=\?ISO-2022-JP\?B\?([^?]*?)\?\=/mi){ - NKF.nkf("-Je", $1.gsub(/\s/, "").unpack("m")[0]) + NKF.nkf("-Jw", $1.gsub(/\s/, "").unpack("m")[0]) +} +str.gsub!(/\=\?utf-8\?b\?([^?]*?)\?\=/mi){ + NKF.nkf("-Ww", $1.gsub(/\s/, "").unpack("m")[0]) } # # Mail contents # -str.gsub!(/<pre>(.*?)<\/pre>/m) { - message = NKF.nkf("-Je", CGI.unescapeHTML($1)) - message = CGI.escapeHTML(message) - message.gsub!(/<A href=(.*) target="_NEW">(.*)<\/A>/) { - "<A href=" + CGI.unescapeHTML($1) + " target=\"_NEW\">" + $2 + "</A>" - } - "<pre>#{message}</pre>" +str.gsub!(/(\033\$B.*?\033\(B)/m) { + CGI::escapeHTML( NKF::nkf("-Jw", CGI.unescapeHTML($1)) ) } # @@ -152,6 +146,6 @@ # # puts the result. # -puts "Content-Type: text/html; charset=EUC-JP" +puts "Content-Type: text/html; charset=utf-8" puts "" puts str
もとのコードはEUC-JPを吐くようになっていたが、最近はUTF-8なメールも増えているし、SF.jp自体がUTF-8化されてしまったので、それに追従。おかげでコードがだいぶすっきりしたけど、NKFがUTF-8対応していないちょっと古いrubyだと動かんかも。