cnpj-alfanumerico 0.1.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 +7 -0
- data/exe/cnpj-alfanumerico +22 -0
- data/lib/cnpj-alfanumerico.rb +1 -0
- data/test/cnpj_alfanumerico_test.rb +46 -0
- data/test/test_helper.rb +3 -0
- metadata +80 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 845275aa7787f592c19ac2d4da1e95a63742e372f754b5ef0b77acc75e26493a
|
|
4
|
+
data.tar.gz: b5aa48d8fe71f68e85c42c8977f308bd3da26fa72d87e445fdac25e391b6d520
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 83791adc5e4703e1b70a12a54e634dc3af452baaf7d7fa3220320c7dbaa4f33fbf9357ef9483a47dd640828ddfd2e2cfb70d9b549f7fb07f3f80e4844d3d2b59
|
|
7
|
+
data.tar.gz: 5e758b9dad50272e405f0efd36cdd7e309e9d5996fd1e75adaddd851d9107e55120963206ac1619e8ff74b81073fd8d4983dfc1b01fd4801f2adc13514f7c67b
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "json"
|
|
5
|
+
require_relative "../lib/cnpj-alfanumerico"
|
|
6
|
+
|
|
7
|
+
command = ARGV.shift
|
|
8
|
+
value = ARGV.shift
|
|
9
|
+
|
|
10
|
+
case command
|
|
11
|
+
when "validate"
|
|
12
|
+
puts Cnpj::Alfanumerico.valid?(value)
|
|
13
|
+
when "generate"
|
|
14
|
+
puts Cnpj::Alfanumerico.generate(value)
|
|
15
|
+
when "format"
|
|
16
|
+
puts Cnpj::Alfanumerico.format(value)
|
|
17
|
+
when "split"
|
|
18
|
+
puts JSON.generate(Cnpj::Alfanumerico.split(value))
|
|
19
|
+
else
|
|
20
|
+
warn "Usage: cnpj-alfanumerico [validate|generate|format|split] VALUE"
|
|
21
|
+
exit 1
|
|
22
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require_relative "cnpj/alfanumerico"
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class CnpjAlfanumericoTest < Minitest::Test
|
|
4
|
+
def test_normalizes_punctuation_and_lowercase
|
|
5
|
+
assert_equal "12ABC34501DE35", Cnpj::Alfanumerico.normalize("12.abc.345/01de-35")
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_maps_alphanumeric_values_using_ascii_minus_48
|
|
9
|
+
assert_equal 0, Cnpj::Alfanumerico.char_value("0")
|
|
10
|
+
assert_equal 9, Cnpj::Alfanumerico.char_value("9")
|
|
11
|
+
assert_equal 17, Cnpj::Alfanumerico.char_value("A")
|
|
12
|
+
assert_equal 42, Cnpj::Alfanumerico.char_value("Z")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_calculates_official_receita_example
|
|
16
|
+
assert_equal "35", Cnpj::Alfanumerico.calculate_check_digits("12ABC34501DE")
|
|
17
|
+
assert_equal "12ABC34501DE35", Cnpj::Alfanumerico.generate("12ABC34501DE")
|
|
18
|
+
assert_equal "12.ABC.345/01DE-35", Cnpj::Alfanumerico.format("12ABC34501DE35")
|
|
19
|
+
assert Cnpj::Alfanumerico.valid?("12.ABC.345/01DE-35")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_validates_legacy_numeric_cnpj
|
|
23
|
+
assert Cnpj::Alfanumerico.valid?("11.444.777/0001-61")
|
|
24
|
+
assert_equal "11.444.777/0001-61", Cnpj::Alfanumerico.format("11444777000161")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_rejects_invalid_values
|
|
28
|
+
refute Cnpj::Alfanumerico.valid?("12.ABC.345/01DE-36")
|
|
29
|
+
refute Cnpj::Alfanumerico.valid?("12.ABC.345/01DE-3X")
|
|
30
|
+
assert_raises(ArgumentError) { Cnpj::Alfanumerico.calculate_check_digits("ABC") }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_splits_and_asserts_valid_cnpj
|
|
34
|
+
assert_equal(
|
|
35
|
+
{ raiz: "12ABC345", ordem: "01DE", dv: "35" },
|
|
36
|
+
Cnpj::Alfanumerico.split("12.ABC.345/01DE-35")
|
|
37
|
+
)
|
|
38
|
+
assert_equal "12ABC34501DE35", Cnpj::Alfanumerico.assert_valid!("12.ABC.345/01DE-35")
|
|
39
|
+
assert_raises(ArgumentError) { Cnpj::Alfanumerico.assert_valid!("12.ABC.345/01DE-36") }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_detects_formatted_values
|
|
43
|
+
assert Cnpj::Alfanumerico.formatted?("12.ABC.345/01DE-35")
|
|
44
|
+
refute Cnpj::Alfanumerico.formatted?("12ABC34501DE35")
|
|
45
|
+
end
|
|
46
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: cnpj-alfanumerico
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Miguel C. Honorio
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: exe
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2026-05-05 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: minitest
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '5.25'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '5.25'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '13.2'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '13.2'
|
|
41
|
+
description: Implementa o calculo do digito verificador do CNPJ alfanumerico conforme
|
|
42
|
+
a Receita Federal, mantendo compatibilidade com CNPJ numerico.
|
|
43
|
+
email:
|
|
44
|
+
- miguel@prosulti.com.br
|
|
45
|
+
executables:
|
|
46
|
+
- cnpj-alfanumerico
|
|
47
|
+
extensions: []
|
|
48
|
+
extra_rdoc_files: []
|
|
49
|
+
files:
|
|
50
|
+
- exe/cnpj-alfanumerico
|
|
51
|
+
- lib/cnpj-alfanumerico.rb
|
|
52
|
+
- test/cnpj_alfanumerico_test.rb
|
|
53
|
+
- test/test_helper.rb
|
|
54
|
+
homepage: https://github.com/miguelcarloshonorio/cpnj_ruby_2026
|
|
55
|
+
licenses:
|
|
56
|
+
- MIT
|
|
57
|
+
metadata:
|
|
58
|
+
homepage_uri: https://github.com/miguelcarloshonorio/cpnj_ruby_2026
|
|
59
|
+
source_code_uri: https://github.com/miguelcarloshonorio/cpnj_ruby_2026
|
|
60
|
+
changelog_uri: https://github.com/miguelcarloshonorio/cpnj_ruby_2026/blob/main/CHANGELOG.md
|
|
61
|
+
post_install_message:
|
|
62
|
+
rdoc_options: []
|
|
63
|
+
require_paths:
|
|
64
|
+
- lib
|
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
66
|
+
requirements:
|
|
67
|
+
- - ">="
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: 2.7.6
|
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '0'
|
|
75
|
+
requirements: []
|
|
76
|
+
rubygems_version: 3.4.19
|
|
77
|
+
signing_key:
|
|
78
|
+
specification_version: 4
|
|
79
|
+
summary: Validacao, calculo e formatacao de CNPJ numerico e alfanumerico.
|
|
80
|
+
test_files: []
|