lib/petrarca.rb in petrarca-0.6.7 vs lib/petrarca.rb in petrarca-1.0.0

- old
+ new

@@ -1,85 +1,85 @@ -require "petrarca/version" -require "petrarca/isbn13" -require "petrarca/isbn10" -require "petrarca/helpers" - - -module Petrarca - class Error < StandardError; end - class IncorrectFormatError < StandardError; end - - data_dir = __dir__ + "/../data" - REGISTRATION_GROUP_RANGES = Helpers.load_ranges("#{data_dir}/registration_group_ranges.txt") - REGISTRANT_RANGES = Helpers.load_ranges("#{data_dir}/registrant_ranges.txt") - - extend self - - def valid?(isbn) - case dehyphenate(isbn).size - when 13 - ISBN13.valid?(isbn) - when 10 - ISBN10.valid?(isbn) - else - false - end - end - - def correct_format?(isbn) - 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 = 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 = dehyphenate(isbn13)[3, 9] - ISBN10.hyphenate(s + ISBN10.calc_check_digit(s)) - end - - def to_13(isbn10) - s = "978" + dehyphenate(isbn10)[0, 9] - ISBN13.hyphenate(s + ISBN13.calc_check_digit(s)) - end - -end +require "petrarca/version" +require "petrarca/isbn13" +require "petrarca/isbn10" +require "petrarca/helpers" +require "isbnranges" + + +module Petrarca + class Error < StandardError; end + class IncorrectFormatError < StandardError; end + + REGISTRATION_GROUP_RANGES = ISBNRanges::REGISTRATION_GROUP_RANGES + REGISTRANT_RANGES = ISBNRanges::REGISTRANT_RANGES + + extend self + + def valid?(isbn) + case dehyphenate(isbn).size + when 13 + ISBN13.valid?(isbn) + when 10 + ISBN10.valid?(isbn) + else + false + end + end + + def correct_format?(isbn) + 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 = 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 = dehyphenate(isbn13)[3, 9] + ISBN10.hyphenate(s + ISBN10.calc_check_digit(s)) + end + + def to_13(isbn10) + s = "978" + dehyphenate(isbn10)[0, 9] + ISBN13.hyphenate(s + ISBN13.calc_check_digit(s)) + end + +end