正しい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