Ruby,日本語,文字列をパディングして幅をそろえる

まあこんなものか。

$KCODE='s' #適宜
require 'jcode'
def pad(width,word)
    wordwidth=word.jlength*2-(word.count 'a-zA-Z0-9') #TODO: 記号にも対応する
    return word if width <= wordwidth
    return ' '*(width-wordwidth)+word
end
irb(main):016:0> puts pad(10,'ほげ')
      ほげ
puts pad(10,'aaa')
       aaa
puts pad(10,'aaaふが')
   aaaふが
puts pad(10,'aaaふがほげbbb')
aaaふがほげbbb