cfita 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 597f1c4779c15b9f253dbfb5d2962266b35394bd66b18d3a2936cbd02817b26d
4
- data.tar.gz: ad21326852887a59bf9b1ecf592a7be37a10242b5cba1be01d03161083c7f0e4
3
+ metadata.gz: 79fb90478a1c2e761048d863091a60dff5ea118a48b68527ecc2df1fb849d05f
4
+ data.tar.gz: cb18f19a6a571135d0a7c60963524c5af2d8f1d144283c64892eb93d957b47f8
5
5
  SHA512:
6
- metadata.gz: 14931e761bd41be001ebe01c76c95385065d1da0128db6fa341d883a7b2c6e77173fbee45d6f2f811fb63e2dc420d1b26d7406c9e178a6f57503730651a111c5
7
- data.tar.gz: b0d838210243e2c334c894daf3771ab091bec3c0aa3c127b15548a01bc350a30a6c329c184e121f485ad377bf5e5d9ee312ce5de02834ecb9340a31a2f7f9d88
6
+ metadata.gz: 896d41364afed131d83b36d5de1a606cf5e635c4273486c6d9daf20f2e0f272b3577fcf9d6125827286f5be1c0d7463b5ec019b0aa4d53708865e49bff5eb2bb
7
+ data.tar.gz: 6fed50fdd92d079305eb28a5578bcc1f6d496fe8ad6805f2195e933c728f8684eeb32f0e98bfc4a7a171f72db403e79319ba3bcedfa6ee9594be285e6e48c52e
data/cfita.gemspec CHANGED
@@ -3,7 +3,7 @@
3
3
  Gem::Specification.new do |s|
4
4
  s.required_ruby_version = '>= 2.4'
5
5
  s.name = 'cfita'
6
- s.version = '0.0.3'
6
+ s.version = '0.0.5'
7
7
  s.date = '2019-06-17'
8
8
  s.summary = 'Italian fiscal code checker'
9
9
  s.description = 'Controllo codici fiscali italiani'
@@ -10,16 +10,16 @@ module Cfita
10
10
  :sex,
11
11
  :birth_place,
12
12
  :birth_date,
13
- :data,
14
13
  :errors
15
14
 
16
15
  def self.ccat
17
16
  @ccat ||= JSON.parse(open('ccat.json'))
18
17
  end
19
18
 
20
- def initialize(fiscal_code, birth_place: nil)
19
+ def initialize(fiscal_code, birth_place: nil, birth_date: nil)
21
20
  @fiscal_code = fiscal_code.upcase.strip
22
- @birth_place = birth_place
21
+ @birth_place = birth_place&.upcase
22
+ @birth_date = birth_date && (birth_date.is_a?(Date) ? birth_date : Date.parse(birth_date))
23
23
  @data = {}
24
24
  @errors = []
25
25
  parse
@@ -66,12 +66,17 @@ module Cfita
66
66
  def check_sex
67
67
  case @fiscal_code[9]
68
68
  when /[0-3LMNP]/
69
- @data[:sex] = 'M'
69
+ sex = 'M'
70
70
  when /[4-7QRST]/
71
- @data[:sex] = 'F'
71
+ sex = 'F'
72
72
  else
73
73
  @errors << 'Cifra decina giorno di nascita errata'
74
74
  end
75
+ if @sex
76
+ errors << 'Sesso errato' if @sex != sex
77
+ else
78
+ @sex = sex
79
+ end
75
80
  end
76
81
 
77
82
  def check_birth_place
@@ -108,19 +113,20 @@ module Cfita
108
113
  @errors << 'Cifra decina giorno di nascita errata' if day > 71
109
114
  return if @errors.any?
110
115
 
111
- @data[:sex] = day > 40 ? 'F' : 'M'
112
-
113
116
  month = MESI.index(@fiscal_code[8])
114
117
  @errors << 'Mese errato' unless month
115
118
  return if @errors.any?
116
119
 
117
- @birth_date =
118
- Date.new(yy2yyyy(yy), month + 1, day % 40) rescue nil
120
+ date = Date.new(yy2yyyy(yy), month + 1, day % 40) rescue nil
119
121
 
120
- @errors << 'Data di nascita errata' unless @birth_date
122
+ @errors << 'Data di nascita errata' unless date
121
123
  return if @errors.any?
122
124
 
123
- @data[:birth_date] = @birth_date
125
+ if @birth_date
126
+ @errors << 'Data di nascita errata' if @birth_date != date
127
+ else
128
+ @birth_date = date
129
+ end
124
130
  end
125
131
 
126
132
  def yy2yyyy(yy)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfita
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Savanelli