class SecId::Base

Attributes

check_digit[R]
full_number[R]
identifier[R]

Public Class Methods

check_digit(id) click to toggle source
# File lib/sec_id/base.rb, line 41
def self.check_digit(id)
  new(id).calculate_check_digit
end
new(_sec_id_number) click to toggle source
# File lib/sec_id/base.rb, line 45
def initialize(_sec_id_number)
  raise NotImplementedError
end
restore!(id_without_check_digit) click to toggle source
# File lib/sec_id/base.rb, line 37
def self.restore!(id_without_check_digit)
  new(id_without_check_digit).restore!
end
valid?(id) click to toggle source
# File lib/sec_id/base.rb, line 29
def self.valid?(id)
  new(id).valid?
end
valid_format?(id) click to toggle source
# File lib/sec_id/base.rb, line 33
def self.valid_format?(id)
  new(id).valid_format?
end

Public Instance Methods

calculate_check_digit() click to toggle source
# File lib/sec_id/base.rb, line 64
def calculate_check_digit
  raise NotImplementedError
end
restore!() click to toggle source
# File lib/sec_id/base.rb, line 59
def restore!
  @check_digit = calculate_check_digit
  @full_number = to_s
end
to_s() click to toggle source
# File lib/sec_id/base.rb, line 68
def to_s
  "#{identifier}#{check_digit}"
end
Also aliased as: to_str
to_str()
Alias for: to_s
valid?() click to toggle source
# File lib/sec_id/base.rb, line 49
def valid?
  return false unless valid_format?

  check_digit == calculate_check_digit
end
valid_format?() click to toggle source
# File lib/sec_id/base.rb, line 55
def valid_format?
  identifier ? true : false
end

Private Instance Methods

char_to_digit(char) click to toggle source
# File lib/sec_id/base.rb, line 88
def char_to_digit(char)
  SecId::CHAR_TO_DIGIT.fetch(char)
end
char_to_digits(char) click to toggle source
# File lib/sec_id/base.rb, line 84
def char_to_digits(char)
  SecId::CHAR_TO_DIGITS.fetch(char)
end
div_10_mod_10(number) click to toggle source
# File lib/sec_id/base.rb, line 96
def div_10_mod_10(number)
  (number / 10) + (number % 10)
end
id_digits() click to toggle source
# File lib/sec_id/base.rb, line 75
def id_digits
  raise NotImplementedError
end
mod_10(sum) click to toggle source
# File lib/sec_id/base.rb, line 92
def mod_10(sum)
  (10 - (sum % 10)) % 10
end
parse(sec_id_number) click to toggle source
# File lib/sec_id/base.rb, line 79
def parse(sec_id_number)
  @full_number = sec_id_number.to_s.strip.upcase
  @full_number.match(self.class::ID_REGEX) || {}
end