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
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