Sha256: 5567f4682a96327f557a9d36dba08303d28e12a4c71bb7465f92d1c66d828191
Contents?: true
Size: 622 Bytes
Versions: 1
Compression:
Stored size: 622 Bytes
Contents
require "petrarca/helpers" module Petrarca module ISBN13 include Helpers extend self def valid?(isbn) correct_format?(isbn) && isbn[-1] == calc_check_digit(isbn) end def correct_format?(isbn) isbn = isbn.delete("-") !!(/\A97[89]\d{9}\d\z/ =~ isbn) end def calc_check_digit(isbn) nums = isbn.delete("-").split("")[0..11].map{|x| x.to_i } sum = nums.zip([1, 3] * 6).map{|x, y| x * y }.inject(:+) check_digit = 10 - (sum % 10) check_digit == 10 ? "0" : check_digit.to_s end def hyphenate(isbn) hyphenate13(isbn) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
petrarca-0.2.0 | lib/petrarca/isbn13.rb |