ただのにっき
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だと動かんかも。