class TcKimlikNoDogrulama::Validations::Format
Attributes
sum[RW]
sum_even[RW]
sum_odd[RW]
Public Class Methods
new(value)
click to toggle source
# File lib/tc_kimlik_no_dogrulama/validations/format.rb, line 5 def initialize(value) @value = value.to_s @sum = 0 @sum_odd = 0 @sum_even = 0 end
Public Instance Methods
valid?()
click to toggle source
# File lib/tc_kimlik_no_dogrulama/validations/format.rb, line 12 def valid? return false if starts_with_zero? # Kontrol 1: 1 3 5 7 ve 9 hanelerinin toplamının 7 katından, 2 4 6 ve 8 # hanelerin toplamı çıkartıldığında, elde edilen sonucun 10'a bölümünden # kalan sayı, yani Mod 10'u bize 10. haneyi vermelidir. # Kontrol 2: 1 2 3 4 5 6 7 8 9 ve 10 hanelerinin toplamından elde edilen sonucun # 10'a bölümünden kalan sayı, yani Mod 10'u bize 11. haneyi vermelidir. calculate_sums (sum_odd * 7 - sum_even) % 10 == digits[9] && sum % 10 == digits[10] end
Private Instance Methods
calculate_sums()
click to toggle source
# File lib/tc_kimlik_no_dogrulama/validations/format.rb, line 38 def calculate_sums digits[0..9].each.with_index(1) do |number, index| @sum += number next if index > 9 index.even? ? @sum_even += number : @sum_odd += number end end
digits()
click to toggle source
# File lib/tc_kimlik_no_dogrulama/validations/format.rb, line 34 def digits @digits ||= @value.each_char.map(&:to_i) end
starts_with_zero?()
click to toggle source
# File lib/tc_kimlik_no_dogrulama/validations/format.rb, line 29 def starts_with_zero? # T.C. Kimlik numarası 0 ile başlayamaz. @value.chr == '0' end