class SecurityIdentifiers::CUSIP
Constants
- SYMBOLS
Public Class Methods
new(str)
click to toggle source
# File lib/security_identifiers/cusip.rb, line 9 def initialize(str) raise InvalidFormat if str.nil? match_data = str.upcase.match(/^([A-Z0-9\*@#]{8})(\d{1})?$/) raise InvalidFormat if match_data.nil? @identifier, @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/cusip.rb, line 21 def check_digit values = even_values.map { |i| i * 2 }.zip(odd_values).flatten sum = values.inject(0) do |result, i| result + (i / 10) + i % 10 end mod_10(sum) end
to_isin(iso = 'US')
click to toggle source
# File lib/security_identifiers/cusip.rb, line 31 def to_isin(iso = 'US') raise InvalidConversion unless %w(US CA).include?(iso) ISIN.new([iso, @identifier, check_digit].join) end
Private Instance Methods
digits_for(char)
click to toggle source
Calls superclass method
SecurityIdentifiers::Base#digits_for
# File lib/security_identifiers/cusip.rb, line 39 def digits_for(char) return SYMBOLS[char] if SYMBOLS.key?(char) super end