atomutilをいじる

gemから導入したatomutilがruby 2.3で動作しない。正確には、日本語混じりの文章で動作しない。rubyは捨てたのだけど、捨てきれなかったので簡単に直した。

def body=(value)

  if value =~ Regexp.new("^(?:
    [[:print:]]
    |[\xc0-\xdf][\x80-\xbf]
    |[\xe0-\xef][\x80-\xbf]{2}
    |[\xf0-\xf7][\x80-\xbf]{3}
    |[\xf8-\xfb][\x80-\xbf]{4}
    |[\xfc-\xfd][\x80-\xbf]{5}
    )*$", Regexp::EXTENDED, 'n')

の部分が問題で、UTF-8のStringかチェックしようとしているようだ。先頭行に

# coding: utf-8

を追加した上で

def body=(value)

  if value.valid_encoding? then
  #if value =~ Regexp.new("^(?:
  #  [[:print:]]
  #  |[\xc0-\xdf][\x80-\xbf]
  #  |[\xe0-\xef][\x80-\xbf]{2}
  #  |[\xf0-\xf7][\x80-\xbf]{3}
  #  |[\xf8-\xfb][\x80-\xbf]{4}
  #  |[\xfc-\xfd][\x80-\xbf]{5}
  #  )*$", Regexp::EXTENDED, 'n')

として動作するようにした。これくらい元のコードで動けよと思う。