正しいISBN10に対してISBN_Tools.is_valid_isbn10?がfalseになる。

あとで調べる。1.9のせいかな。

C:\Temp>ruby -v
ruby 1.9.2p290 (2011-07-09) [i386-mingw32]

C:\Temp>irb
irb(main):001:0> require 'isbn/tools'
=> true
irb(main):002:0> isbn13 = '9784062748698'        # ノルウェイの森 下 (講談社文庫)
=> "9784062748698"
irb(main):003:0> ISBN_Tools.is_valid_isbn13? '9784062748698'
=> true
irb(main):004:0> isbn10 = ISBN_Tools.isbn13_to_isbn10 isbn13
=> "406274869X"
irb(main):005:0> ISBN_Tools.is_valid_isbn10? isbn10
=> false
irb(main):006:0>

2011/12/13 追記
やはり、1.9のせいでした。とりあえず以下で、isbn[ndx]!= 'X'とかにすれば動く。

def ISBN_Tools.is_valid_isbn10?(isbn_)
  isbn = cleanup(isbn_)
  return false if isbn.nil? or isbn.match(/^[0-9]{9}[0-9X]$/).nil?
  sum = 0;
  0.upto(9) { |ndx| sum += (isbn[ndx]!= 88 ? isbn[ndx].chr.to_i : 10) * (10-ndx) } # 88 is ascii of X
  sum % 11 == 0
end