Sha256: e041197ea83abb65caed65771abcdcdff655d3a61792351af99f318f16e60da8
Contents?: true
Size: 616 Bytes
Versions: 2
Compression:
Stored size: 616 Bytes
Contents
module Bookland # An abstract unique commercial identifier for a product. class Identifier def self.calculate_checksum(payload) raise NotImplementedError end def self.valid?(raw) new(raw).valid? end def initialize(raw) @raw = raw end def checksum digits[-1] end def payload digits[0...-1] end def to_s @raw end def valid? checksum == self.class.calculate_checksum(payload) end def ==(other) to_s == other.to_s end private def digits @digits ||= @raw.split '' end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
bookland-2.0.0 | lib/bookland/identifier.rb |
bookland-2.0.0.beta | lib/bookland/identifier.rb |