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