cuitar 1.0.0 → 1.2.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: 20ff1454cc92d75b0a189f3c8bf3e96034589c714d3ba87f9d5f1407557ba0df
4
- data.tar.gz: ed8274b5b49cb0092291c8c6aee810ca0e049803e1a5924520ad52b4ebe52996
3
+ metadata.gz: c558641038eaa45b9d00fe5f7e0c8fe46c06aaec4bc3d42a8edd53ea86d722fc
4
+ data.tar.gz: ef534ebed29d24549b58bc1347d0620c0d5b6c5e52004c2d3af83ce5f208301f
5
5
  SHA512:
6
- metadata.gz: '0822a51e245202b439f164e546ebfea756f9cdd0dcb37be94d5b97b4d184a41c8daf929cbaaf11d115eef3bd85df26384892e65c35713ecff7eae6615a294bf8'
7
- data.tar.gz: cece5b93f180399ce3c7458529c28b0f80e3fded1461670f1d201fc375ef9427bbd4c76b365f356cf5a35ab62c3a5ed0f2100743c3fce1c44575b66b86777901
6
+ metadata.gz: fd58ced15b82cb16b256addf25e279cf496b1b8c48e2cfc34a841c73e8fdb5b84178407bf19fe3f1cd03fcf4c6dc6b13c722a23a4a16a5ce4c61566dca388f8e
7
+ data.tar.gz: e1d054a05a214b7c7991dd393b53af0b251d184bd89899f9249130789c8d64c81c8fb7a6b38d8dcb59d60f6befd60e58435cfa15c69ab46613716876dd9c3817
data/.gitignore CHANGED
@@ -6,3 +6,4 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ .ruby-version
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cuitar (1.0.0)
4
+ cuitar (1.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- minitest (5.14.2)
10
- rake (12.3.1)
9
+ minitest (5.18.0)
10
+ rake (12.3.3)
11
11
 
12
12
  PLATFORMS
13
13
  ruby
@@ -18,4 +18,4 @@ DEPENDENCIES
18
18
  rake (~> 12.0)
19
19
 
20
20
  BUNDLED WITH
21
- 2.1.4
21
+ 2.4.10
data/README.md CHANGED
@@ -28,8 +28,6 @@ cuit_number = '20228518310' # o '20-22851831-0' o 20228518310
28
28
 
29
29
  cuit = Cuit.new(cuit_number)
30
30
 
31
- cuit.valid? # => true
32
-
33
31
  cuit.to_s # => '20-22851831-0'
34
32
  ```
35
33
 
@@ -41,6 +39,22 @@ cuit.to_s # => '20-22851831-0'
41
39
 
42
40
  * Un `Integer` comprendido por los 11 números que componen una CUIT.
43
41
 
42
+ Instanciar la clase `Cuit` con una CUIT inválida genera un `ArgumentError`
43
+
44
+ ```ruby
45
+ cuit_number = 123
46
+
47
+ cuit = Cuit.new(cuit_number) # => Invalid CUIT (ArgumentError)
48
+ ```
49
+
50
+ Es posible validar una CUIT
51
+
52
+ ```ruby
53
+ Cuit.valid?(123) # => false
54
+
55
+ Cuit.valid?(20228518310) # => #<Cuit:0x000000010f589930 @check_digit=0, @cuit="20228518310", @dni="22851831", @type="20">
56
+ ```
57
+
44
58
 
45
59
  ## Contribuciones
46
60
 
data/cuitar.gemspec CHANGED
@@ -7,20 +7,20 @@ Gem::Specification.new do |spec|
7
7
  spec.email = ['sebas@wasabit.com.ar']
8
8
 
9
9
  spec.summary = 'Valida y formatea CUIT argentinas.'
10
- spec.description = 'Valida y formatea CUIT argentinas.'
10
+ spec.description = 'Validador y formateador de CUIT (Clave Única Tributaria) Argentina.'
11
11
  spec.homepage = 'https://github.com/srabuini/cuitar'
12
12
  spec.license = 'MIT'
13
13
  spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
14
14
 
15
- # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
16
-
17
15
  spec.metadata['homepage_uri'] = spec.homepage
18
16
  spec.metadata['source_code_uri'] = 'https://github.com/srabuini/cuitar'
19
17
 
20
18
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
21
19
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
20
  end
21
+
23
22
  spec.bindir = 'exe'
24
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
24
  spec.require_paths = ['lib']
25
+ spec.metadata['rubygems_mfa_required'] = 'true'
26
26
  end
data/lib/cuit.rb CHANGED
@@ -1,16 +1,22 @@
1
1
  class Cuit
2
+ def self.valid?(cuit)
3
+ begin
4
+ new(cuit)
5
+ rescue
6
+ false
7
+ end
8
+ end
9
+
2
10
  def initialize(cuit)
3
- @cuit = cuit.to_s.tr('^0-9', '')
11
+ @cuit = cuit.to_s.gsub(/\D/, '')
12
+
13
+ raise ArgumentError, 'Invalid CUIT' unless valid?
4
14
  end
5
15
 
6
16
  def to_s
7
17
  [type, dni, check_digit].join('-')
8
18
  end
9
19
 
10
- def valid?
11
- @cuit.size == 11 && calculated_digit == check_digit
12
- end
13
-
14
20
  private
15
21
 
16
22
  def type
@@ -35,8 +41,20 @@ class Cuit
35
41
  .zip(cuit_sequence)
36
42
  .reduce(0) { |a, e| a + e.reduce(:*) }
37
43
 
38
- diff = 11 - sum % 11
44
+ diff = 11 - (sum % 11)
39
45
 
40
46
  diff == 11 ? 0 : diff
41
47
  end
48
+
49
+ def right_length?
50
+ @cuit.length == 11
51
+ end
52
+
53
+ def checked?
54
+ calculated_digit == check_digit
55
+ end
56
+
57
+ def valid?
58
+ right_length? && checked?
59
+ end
42
60
  end
@@ -1,3 +1,3 @@
1
1
  module Cuitar
2
- VERSION = '1.0.0'.freeze
2
+ VERSION = '1.2.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuitar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Rabuini
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-28 00:00:00.000000000 Z
11
+ date: 2023-03-31 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Valida y formatea CUIT argentinas.
13
+ description: Validador y formateador de CUIT (Clave Única Tributaria) Argentina.
14
14
  email:
15
15
  - sebas@wasabit.com.ar
16
16
  executables: []
@@ -36,7 +36,8 @@ licenses:
36
36
  metadata:
37
37
  homepage_uri: https://github.com/srabuini/cuitar
38
38
  source_code_uri: https://github.com/srabuini/cuitar
39
- post_install_message:
39
+ rubygems_mfa_required: 'true'
40
+ post_install_message:
40
41
  rdoc_options: []
41
42
  require_paths:
42
43
  - lib
@@ -51,8 +52,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
51
52
  - !ruby/object:Gem::Version
52
53
  version: '0'
53
54
  requirements: []
54
- rubygems_version: 3.0.3
55
- signing_key:
55
+ rubygems_version: 3.4.6
56
+ signing_key:
56
57
  specification_version: 4
57
58
  summary: Valida y formatea CUIT argentinas.
58
59
  test_files: []