class CusipValidator
Constants
- REGEXP
Private Instance Methods
valid_attr?()
click to toggle source
# File lib/lite/validators/cusip_validator.rb, line 9 def valid_attr? valid_regexp? && valid_checksum? end
valid_checksum?()
click to toggle source
rubocop:disable Metrics/AbcSize
# File lib/lite/validators/cusip_validator.rb, line 14 def valid_checksum? digits = value.chars.map { |chr| /[A-Z]/.match?(chr) ? (chr.ord - 55) : chr.to_i } even_values = digits.values_at(*digits.each_index.select(&:even?)) odd_values = digits.values_at(*digits.each_index.select(&:odd?)) values = odd_values.map { |int| int * 2 }.zip(even_values).flatten values = values.inject(0) { |sum, int| sum + (int / 10) + int % 10 } ((10 - values) % 10) % 10 end