l'essentiel est invisible pour les yeux

Tuesday, December 26, 2006

[ruby] ウムラウトを実体参照に変換

卒論やらポルトガル語やらで、Cellができない。。
早く片付けてまたCell始めます。

というわけで今日は、Rubyでウムラウトを実体参照に変換するだけのプログラムです。実体参照を打つのが面倒だったため、同じことで誰かが苦しまないように書いておきます。


module Umlaut
UMLAUT_TRANSLATE_TABLE = %w(À Á Â Ã Ä Å Æ Ç È É Ê Ë
Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú
Û Ü Ý Þ ß à á â ã ä å æ ç è é
ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø
ù ú û ü ý þ ÿ)

def umlaut2entity
ret = ""
self.each_byte do |c|
(ret += c.chr and next) if c < 0xc0
ret += UMLAUT_TRANSLATE_TABLE[c - 0xc0]
end
ret
end
end

String.class_eval do
include Umlaut
end

if $0 == __FILE__
puts "Voc\xea \xe8 linda!".umlaut2entity
end


実行結果

% ruby test2.rb
Você è linda!
%


これでブラジル人とつきあうことになっても大丈夫です。


参考
http://www.pref.shizuoka.jp/kikaku/ki-28/bom_dia/lesson10.htm