class SecurityIdentifiers::ISIN
Public Class Methods
new(str)
click to toggle source
# File lib/security_identifiers/isin.rb, line 3 def initialize(str) raise InvalidFormat if str.nil? match_data = str.upcase.match(/^(([A-Z]{2})([A-Z0-9]{9}))(\d{1})?$/) raise InvalidFormat if match_data.nil? @identifier, @country_code, @nsin, @original_check_digit = match_data.captures fix! if @original_check_digit.nil? end
Public Instance Methods
check_digit()
click to toggle source
# File lib/security_identifiers/isin.rb, line 15 def check_digit @check_digit ||= begin first_group = digit_groups[0].map { |d| d * 2 } second_group = digit_groups[1] sum = (first_group + second_group).join.each_char.inject(0) { |result, i| result + i.to_i } mod_10(sum) end end
Private Instance Methods
digit_groups()
click to toggle source
# File lib/security_identifiers/isin.rb, line 28 def digit_groups if digits.size.even? [even_values, odd_values] else [odd_values, even_values] end end