Sha256: e120953d34ec5179eafe1a504d76750fd452c71853214839dca1e2607c45f7f9
Contents?: true
Size: 1.04 KB
Versions: 1
Compression:
Stored size: 1.04 KB
Contents
class GenericID def number_length; 0; end; def check_digits_length; 1; end; attr_reader :number def initialize number @number = clear_number(number) @number = @number.rjust number_length, '0' if number_length > 0 and @number.length != number_length end def check_digits @check_digits ||= begin @number[-check_digits_length, check_digits_length] end end def sequential @sequential ||= begin @number[0, @number.length - check_digits_length] end end def valid? return @valid if self.frozen? @valid ||= begin valid_number == @number and not invalid_sequential? rescue TypeError false end end def freeze check_digits valid? super end def invalid_sequential? @invalid_sequential ||=begin sequential.chars.to_a.uniq.count.eql? 1 end end def to_s "#{sequential}-#{check_digits}" end protected def valid_number sequential.mod11(check_digits_length) end def clear_number number number.to_s.gsub(/\D/, '') end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
brid-0.2.1 | lib/brid/ids/generic_id.rb |