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