cfita 0.3.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/CHANGELOG.md +16 -0
- data/cfita.gemspec +1 -1
- data/lib/cfita/codice_fiscale.rb +17 -13
- data/lib/cfita/codici_catastali.rb +5 -0
- data/lib/cfita.rb +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b56b4943c2a0fea0a83a3ee5706c8af73282769f4c06fef7daddafecbd922441
|
4
|
+
data.tar.gz: 94a1aeb1f8eac113068c0e61ee3de7d924547c5b6d2d427fcb72339fed00e5e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2e3f9aa381694e21470944d3263a25be7d38fbe1292c046a321a0f375473fe72f65f6520a9bf88d81e1da6cfbe8f20e6b54e8d8d104e37bd5766e18503ff1ae
|
7
|
+
data.tar.gz: 58a9e83b91ca8225dc99739ccc374f2cf546238a6a9796002ee3cdd409ac7e9189c65acc34cac5243b32c7ae1f3d60328226c5bae465cbf0e5096dd87487d661
|
data/.gitignore
CHANGED
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 = '
|
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']
|
data/lib/cfita/codice_fiscale.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'active_support/all'
|
4
|
-
|
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
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
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
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.
|
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:
|
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.
|
48
|
+
rubygems_version: 3.5.6
|
49
49
|
signing_key:
|
50
50
|
specification_version: 4
|
51
51
|
summary: Italian fiscal code checker
|