cfita 0.3.1 → 0.5.0

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: 424b84e97b24a15273e3ef1cfc4cf7af8d333342acde10d656375f9e97eec6f9
4
- data.tar.gz: 401e7387c2e19cafea5ef406f33ed30ab4dac68147fcaa6162038f93cca82703
3
+ metadata.gz: b56b4943c2a0fea0a83a3ee5706c8af73282769f4c06fef7daddafecbd922441
4
+ data.tar.gz: 94a1aeb1f8eac113068c0e61ee3de7d924547c5b6d2d427fcb72339fed00e5e8
5
5
  SHA512:
6
- metadata.gz: 293c36acf2d95209ca2e6602b9052087b20f4a45a073c541e0a6042d113475ce7b988e3961fb2d73a46d5d7bc468f06307df54ed000ed2db275acae59c87ff2d
7
- data.tar.gz: 5962972ecfbffdea99f53423c480b3ff962e205b15a90d4d47cf9c73c79af2b4ceb103ef108dd13f151be6b61f8827ea7c1ac59e199e06202af8315a701744a7
6
+ metadata.gz: a2e3f9aa381694e21470944d3263a25be7d38fbe1292c046a321a0f375473fe72f65f6520a9bf88d81e1da6cfbe8f20e6b54e8d8d104e37bd5766e18503ff1ae
7
+ data.tar.gz: 58a9e83b91ca8225dc99739ccc374f2cf546238a6a9796002ee3cdd409ac7e9189c65acc34cac5243b32c7ae1f3d60328226c5bae465cbf0e5096dd87487d661
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  *.gem
2
- test/cfs.txt
2
+ test/cfs.txt
3
+ Gemfile.lock
data/CHANGELOG.md CHANGED
@@ -5,6 +5,22 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## v0.5.0 - 2024-03-19
9
+
10
+ ### Added
11
+
12
+ - M434 - MORANSENGO-TONENGO
13
+ - M435 - UGGIATE CON RONAGO
14
+ - M436 - SOVIZZO
15
+ - M437 - SETTEVILLE
16
+ - M438 - SANTA CATERINA D'ESTE
17
+
18
+ ## v0.4.0 - 2022-12-10
19
+
20
+ ### Fix
21
+
22
+ - return nil from cf_sex, cf_birth_places and cf_birth_date when fiscal code is invalid
23
+
8
24
  ## v0.3.1 - 2022-12-10
9
25
 
10
26
  ### Added
data/cfita.gemspec CHANGED
@@ -5,7 +5,7 @@ Gem::Specification.new do |s|
5
5
  s.required_ruby_version = '>= 2.4'
6
6
  s.name = 'cfita'
7
7
  s.version = Cfita::VERSION
8
- s.date = '2022-12-10'
8
+ s.date = '2024-03-19'
9
9
  s.summary = 'Italian fiscal code checker'
10
10
  s.description = 'Controllo codici fiscali italiani'
11
11
  s.authors = ['Stefano Savanelli']
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'active_support/all'
4
- require 'cfita/codici_catastali'
4
+ require_relative 'codici_catastali'
5
5
 
6
6
  module Cfita
7
7
  # Controllo codice fiscale italiano
@@ -24,7 +24,7 @@ module Cfita
24
24
  surname: nil,
25
25
  sex: nil
26
26
  )
27
- @fiscal_code = fiscal_code.upcase.strip
27
+ @fiscal_code = fiscal_code.to_s.upcase.strip
28
28
  @birth_place = birth_place&.upcase
29
29
  @birth_date = birth_date
30
30
  @birth_date = Date.parse(birth_date) if birth_date.is_a?(String)
@@ -46,12 +46,14 @@ module Cfita
46
46
  def cf_sex
47
47
  return @cf_sex if @cf_sex
48
48
  case @fiscal_code[9]
49
+ when nil
49
50
  when /[0-3LMNP]/
50
51
  @cf_sex = 'M'
51
52
  when /[4-7QRST]/
52
53
  @cf_sex = 'F'
53
54
  else
54
55
  @errors << 'Cifra decina giorno di nascita errata'
56
+ nil
55
57
  end
56
58
  end
57
59
 
@@ -63,10 +65,12 @@ module Cfita
63
65
 
64
66
  def cf_birth_date
65
67
  return @cf_birth_date if @cf_birth_date
68
+
66
69
  yy = cifre(6..7)
67
70
  day = cifre(9..10)
71
+ return unless yy && day
68
72
  @errors << 'Cifra decina giorno di nascita errata' if day && day > 71
69
-
73
+
70
74
  month = MESI.index(@fiscal_code[8])
71
75
  @errors << 'Mese errato' unless month
72
76
  return unless yy && month && day
@@ -76,17 +80,15 @@ module Cfita
76
80
 
77
81
  private
78
82
 
79
- def codice_catastale
83
+ def codice_catastale
80
84
  return @codice_catastale if @codice_catastale
81
- letter = @fiscal_code[11]
82
- numbers =
83
- @fiscal_code[12..14]
84
- .split(//)
85
- .map do |c|
86
- i = OMOCODICI.index(c)
87
- i ? i.to_s : c
88
- end
89
- .join
85
+ return unless letter = @fiscal_code[11]
86
+ return unless numbers = @fiscal_code[12..14]
87
+
88
+ numbers = numbers.chars.map do |c|
89
+ i = OMOCODICI.index(c)
90
+ i ? i.to_s : c
91
+ end.join
90
92
  letter + numbers
91
93
  end
92
94
 
@@ -194,6 +196,8 @@ module Cfita
194
196
  result = 0
195
197
  range.each do |position|
196
198
  char = @fiscal_code[position]
199
+ return nil unless char
200
+
197
201
  value = CIFRE.index(char)
198
202
  @errors << "Carattere '#{char}' errato in posizione #{position}" unless value
199
203
  return nil unless value
@@ -10417,6 +10417,11 @@ module Cfita
10417
10417
  'M431' => ["VILLE DI FIEMME"],
10418
10418
  'M432' => ["MISILISCEMI"],
10419
10419
  'M433' => ["BARDELLO CON MALGESSO E BREGANO"],
10420
+ 'M434' => ["MORANSENGO-TONENGO"],
10421
+ 'M435' => ["UGGIATE CON RONAGO"],
10422
+ 'M436' => ["SOVIZZO"],
10423
+ 'M437' => ["SETTEVILLE"],
10424
+ 'M438' => ["SANTA CATERINA D'ESTE"],
10420
10425
  'Z100' => ["ALBANIA"],
10421
10426
  'Z101' => ["ANDORRA"],
10422
10427
  'Z102' => ["AUSTRIA"],
data/lib/cfita.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # controllo codice fiscale italiano
4
4
  module Cfita
5
- require 'cfita/codice_fiscale'
5
+ require_relative 'cfita/codice_fiscale'
6
6
 
7
- VERSION='0.3.1'
7
+ VERSION='0.5.0'
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfita
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Savanelli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-10 00:00:00.000000000 Z
11
+ date: 2024-03-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Controllo codici fiscali italiani
14
14
  email: stefano@savanelli.it
@@ -45,7 +45,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
47
  requirements: []
48
- rubygems_version: 3.3.26
48
+ rubygems_version: 3.5.6
49
49
  signing_key:
50
50
  specification_version: 4
51
51
  summary: Italian fiscal code checker