lib/petrarca.rb in petrarca-0.5.15 vs lib/petrarca.rb in petrarca-0.6.0
- old
+ new
@@ -13,59 +13,73 @@
REGISTRANT_RANGES = Helpers.load_ranges("#{data_dir}/registrant_ranges.txt")
extend self
def valid?(isbn)
- case isbn.to_s.delete("-").size
+ case dehyphenate(isbn).size
when 13
ISBN13.valid?(isbn)
when 10
ISBN10.valid?(isbn)
else
false
end
end
def correct_format?(isbn)
- case isbn.to_s.delete("-").size
+ case dehyphenate(isbn).size
when 13
ISBN13.correct_format?(isbn)
when 10
ISBN10.correct_format?(isbn)
else
false
end
end
def calc_check_digit(isbn)
- isbn = isbn.to_s.delete("-")
+ isbn = dehyphenate(isbn)
case isbn.size
when 12, 13
ISBN13.calc_check_digit(isbn)
when 9, 10
ISBN10.calc_check_digit(isbn)
else
raise IncorrectFormatError
end
end
+ def dehyphenate(isbn)
+ isbn.to_s.delete("-")
+ end
+
def hyphenate(isbn)
isbn = isbn.to_s
case isbn.size
when 13
ISBN13.hyphenate(isbn)
when 10
ISBN10.hyphenate(isbn)
end
end
+ def split(isbn)
+ isbn = isbn.to_s
+ case isbn.size
+ when 13
+ ISBN13.split(isbn)
+ when 10
+ ISBN10.split(isbn)
+ end
+ end
+
def to_10(isbn13)
- s = isbn13.to_s.delete("-")[3, 9]
+ s = dehyphenate(isbn13)[3, 9]
ISBN10.hyphenate(s + ISBN10.calc_check_digit(s))
end
def to_13(isbn10)
- s = "978" + isbn10.to_s.delete("-")[0, 9]
+ s = "978" + dehyphenate(isbn10)[0, 9]
ISBN13.hyphenate(s + ISBN13.calc_check_digit(s))
end
end