2008年9月29日月曜日

初めて書いたRubyスクリプト

古いHTMLをXHTML準拠にするために、タグをすべて小文字に変換するスクリプトをRubyで書いてみたずら。でも、if文が多いのが気に入らない。Rubyならもっと美しく書けるはずなんだが。



Dir.glob("**/*.html") {|fname|
fname_out = fname + ".tmp" #一時出力ファイル名

open(fname_out, "w") {|f_out|
open(fname) {|f_in|
while str = f_in.gets do
if str =~ /\<\!.*\>/ then #Doctype宣言はそのまま
f_out.write(str)
elsif str =~ /\<\?.*\>/ then #xml宣言もそのまま
f_out.write(str)
elsif str =~ /\<.*\>/ then # タグの小文字化
new_str = str.downcase

#一部のタグを大文字に戻す
new_str.gsub!(/ducksys/) {"Ducksys"}
new_str.gsub!(/shift_jis/) {"Shift_JIS"}
new_str.gsub!(/javascript/) {"JavaScript"}
new_str.gsub!(/content-type/) {"Content-Type"}
new_str.gsub!(/content-style-type/) {"Content-Style-Type"}

f_out.write(new_str)
else
f_out.write(str) #タグ以外はそのまま出力
end
end
}
}

File.rename(fname_out, fname) ; #一時ファイル名から元のファイル名に戻す
}


0 件のコメント: