Method: Egn::Validator#validate

Defined in:
lib/egn/validator.rb

#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