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 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