class SecurityIdentifiers::SEDOL
Constants
- WEIGHTS
Public Class Methods
new(str)
click to toggle source
# File lib/security_identifiers/sedol.rb, line 5 def initialize(str) raise InvalidFormat if str.nil? match_data = str.upcase.match(/^([A-Z0-9]{6})(\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/sedol.rb, line 17 def check_digit sum = digits.each_with_index.inject(0) do |result, (i, idx)| result + WEIGHTS[idx] * i end mod_10(sum) end
to_isin(iso = 'GB')
click to toggle source
# File lib/security_identifiers/sedol.rb, line 25 def to_isin(iso = 'GB') raise InvalidConversion unless %w(GB IE).include?(iso) ISIN.new([iso, '00', @identifier, check_digit].join) end
Private Instance Methods
digits_for(char)
click to toggle source
# File lib/security_identifiers/sedol.rb, line 33 def digits_for(char) char =~ /[A-Z]/ ? char.to_i(36) : char.to_i end