Class: TinValid::Tin

Inherits:
Object
  • Object
show all
Defined in:
lib/tin_valid/tin.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(country_code:, tin:, birth_date: nil, kind: nil) ⇒ Tin

Returns a new instance of Tin.



5
6
7
8
9
10
# File 'lib/tin_valid/tin.rb', line 5

def initialize(country_code:, tin:, birth_date: nil, kind: nil)
  @country_code = country_code.to_s.downcase
  @tin = tin
  @birth_date = birth_date
  @kind = kind
end

Instance Attribute Details

#birth_dateObject (readonly)

Returns the value of attribute birth_date.



12
13
14
# File 'lib/tin_valid/tin.rb', line 12

def birth_date
  @birth_date
end

#country_codeObject (readonly)

Returns the value of attribute country_code.



12
13
14
# File 'lib/tin_valid/tin.rb', line 12

def country_code
  @country_code
end

#kindObject (readonly)

Returns the value of attribute kind.



12
13
14
# File 'lib/tin_valid/tin.rb', line 12

def kind
  @kind
end

#tinObject (readonly)

Returns the value of attribute tin.



12
13
14
# File 'lib/tin_valid/tin.rb', line 12

def tin
  @tin
end

Instance Method Details

#valid?Boolean

rubocop:disable Metrics/AbcSize rubocop:disable Metrics/CyclomaticComplexity rubocop:disable Metrics/PerceivedComplexity rubocop:disable Metrics/MethodLength

Returns:

  • (Boolean)


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/tin_valid/tin.rb', line 18

def valid?
  case country_code
  in "at" then AustriaTin.new(tin:).valid?
  in "be" then BelgiumTin.new(tin:, birth_date:).valid?
  in "bg" then BulgariaTin.new(tin:, birth_date:).valid?
  in "cy" then CyprusTin.new(tin:, kind:).valid?
  in "cz" then CzechiaTin.new(tin:, birth_date:).valid?
  in "de" then GermanyTin.new(tin:).valid?
  in "dk" then DenmarkTin.new(tin:, birth_date:).valid?
  in "ee" then EstoniaTin.new(tin:, birth_date:).valid?
  in "es" then SpainTin.new(tin:).valid?
  in "fi" then FinlandTin.new(tin:).valid?
  in "fr" then FranceTin.new(tin:).valid?
  in "gb" then UnitedKingdomTin.new(tin:).valid?
  in "gr" then GreeceTin.new(tin:).valid?
  in "hr" then CroatiaTin.new(tin:).valid?
  in "hu" then HungaryTin.new(tin:).valid?
  in "ie" then IrelandTin.new(tin:).valid?
  in "it" then ItalyTin.new(tin:, birth_date:).valid?
  in "lt" then LithuaniaTin.new(tin:, birth_date:).valid?
  in "lu" then LuxembourgTin.new(tin:, birth_date:).valid?
  in "lv" then LatviaTin.new(tin:, birth_date:).valid?
  in "mt" then MaltaTin.new(tin:).valid?
  in "nl" then NetherlandsTin.new(tin:).valid?
  in "pl" then PolandTin.new(tin:, birth_date:).valid?
  in "pt" then PortugalTin.new(tin:).valid?
  in "ro" then RomaniaTin.new(tin:, birth_date:).valid?
  in "se" then SwedenTin.new(tin:, birth_date:).valid?
  in "si" then SloveniaTin.new(tin:).valid?
  in "sk" then SlovakiaTin.new(tin:).valid?
  end
end