lib/petrarca/isbn10.rb in petrarca-0.5.15 vs lib/petrarca/isbn10.rb in petrarca-0.6.0

- old
+ new

@@ -18,16 +18,16 @@ false end end def correct_format?(isbn) - isbn = isbn.to_s.delete("-") + isbn = dehyphenate(isbn) !!(/\A\d{9}[0-9X]\z/ =~ isbn) end def calc_check_digit(isbn) - nums = isbn.to_s.delete("-").split("")[0, 9].map{|x| x.to_i } + nums = dehyphenate(isbn).split("")[0, 9].map{|x| x.to_i } sum = nums.zip((2..10).to_a.reverse).map{|x, y| x * y }.inject(:+) check_digit = 11 - (sum % 11) case check_digit when 10 "X" @@ -35,12 +35,20 @@ "0" else check_digit.to_s end end + + def dehyphenate(isbn) + Petrarca.dehyphenate(isbn) + end def hyphenate(isbn) - Helpers.split("978" + isbn.to_s).drop(1).join("-") + split(isbn).join("-") + end + + def split(isbn) + Helpers.split("978" + isbn.to_s).drop(1) end end end