class Imei::ImeiValidator
Constants
- REGEX
Attributes
number[R]
Public Class Methods
new(number)
click to toggle source
# File lib/imei/imei_validator.rb, line 10 def initialize(number) @number = number.to_s end
valid?(number)
click to toggle source
# File lib/imei/imei_validator.rb, line 6 def self.valid?(number) new(number).valid? end
Public Instance Methods
number=(number)
click to toggle source
# File lib/imei/imei_validator.rb, line 14 def number=(number) @numbers = nil @number = number end
valid?()
click to toggle source
# File lib/imei/imei_validator.rb, line 19 def valid? return unless [15, 16].include?(number.size) ((rounded_sum - sum_numbers) == last_digit) end
Private Instance Methods
double_each_second_digit()
click to toggle source
# File lib/imei/imei_validator.rb, line 34 def double_each_second_digit arr = [] iterator = 0 numbers.each do |number| iterator += 1 if iterator.odd? arr << number else arr << number*2 end end return arr end
last_digit()
click to toggle source
# File lib/imei/imei_validator.rb, line 56 def last_digit @last_digit ||= numbers.pop end
numbers()
click to toggle source
# File lib/imei/imei_validator.rb, line 26 def numbers @numbers ||= number.each_char.to_a.map(&:to_i) end
rest_of_division()
click to toggle source
# File lib/imei/imei_validator.rb, line 48 def rest_of_division @rest_of_division ||= sum_numbers.modulo(10) end
rounded_sum()
click to toggle source
# File lib/imei/imei_validator.rb, line 52 def rounded_sum @rounded_sum ||= ((sum_numbers - rest_of_division) + 10) end
sum_numbers()
click to toggle source
# File lib/imei/imei_validator.rb, line 30 def sum_numbers @sum_numbers ||= double_each_second_digit.join.each_char.to_a.map(&:to_i).inject(:+) end