Class: Egn::Validator

Inherits:
Object
  • Object
show all
Defined in:
lib/egn/validator.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(egn) ⇒ Validator



10
11
12
13
14
# File 'lib/egn/validator.rb', line 10

def initialize(egn)
  @egn = egn

  @year, @month, @day = explode_date(egn)
end

Instance Attribute Details

#egnObject (readonly)

Returns the value of attribute egn.



3
4
5
# File 'lib/egn/validator.rb', line 3

def egn
  @egn
end

Class Method Details

.validate(egn) ⇒ Object

Convenience method



6
7
8
# File 'lib/egn/validator.rb', line 6

def self.validate(egn)
  Validator.new(egn).validate
end

Instance Method Details

#validateObject

Checks if a given EGN is valid



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/egn/validator.rb', line 17

def validate
  return false unless @egn.length == 10
  return false unless Date.valid_date?(@year, @month, @day)
  
  # Gregorian calendar adoption in 1916 in Bulgaria
  # 31/03/1916 > +13 days > 14/04/1916
  return false if @year == 1916 && @month == 4 && @day <= 13

  # Calculate the checksum and check if the given one is correct
  checksum = Util.egn_checksum(@egn[0, 9])
  checksum == @egn[9].to_i
end