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