cpf_cnpj_tools 0.1.0 → 0.2.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: 453f4b1f02a4e86f772a4428fb4f3389c7d44ca0fa339cf0b8e6a118e20040e2
4
- data.tar.gz: cd9e84c7688720635aa3e0348d1e87c7fe29896c56f764714e53ae3ffcf85154
3
+ metadata.gz: b7d9d6635470921bf186a6348efe25fa7ee27c724be249310355e5f1c37a229b
4
+ data.tar.gz: 3ae4d8e0bf686a9b749728cdc2b246b52a5b2c21459b2401c9d0e135c66aa564
5
5
  SHA512:
6
- metadata.gz: be6f5f87ab65347f711824e01eb045ac14f82dd47f4a5d0d150d161f6372b4e316fe565917ee390cc46701ebb529e368173246bd16aee5abd752ebf02adc013d
7
- data.tar.gz: 316a53c10f44f4752ba0a25c623a6d51c8e2426bfc0735c964ff69eefda8bfefb80785dc904819cb2b10fd1aafc6aa7a55638875d0bf548d7ac43ba51348a651
6
+ metadata.gz: b7ee4d37f9949766db7d72586394badfb74dc28bea3f04396dd5624e775ae1db2621fdf1f25f88dbc2b2c26ac765a1418ce313efd8c12e34dd328710db094424
7
+ data.tar.gz: 95f4e0df9235d19681183db299c24b1c75b3e309b175a3b79e2c209391c76314fd261139ba1530f506feedd2be18530911b01f268c218859e68072cec0e82131
data/.rubocop.yml CHANGED
@@ -1,13 +1,22 @@
1
- AllCops:
2
- TargetRubyVersion: 2.6
3
-
4
- Style/StringLiterals:
5
- Enabled: true
6
- EnforcedStyle: double_quotes
7
-
8
- Style/StringLiteralsInInterpolation:
9
- Enabled: true
10
- EnforcedStyle: double_quotes
11
-
12
- Layout/LineLength:
13
- Max: 120
1
+ AllCops:
2
+ TargetRubyVersion: 2.6
3
+
4
+ Style/StringLiterals:
5
+ Enabled: true
6
+ EnforcedStyle: double_quotes
7
+
8
+ Style/StringLiteralsInInterpolation:
9
+ Enabled: true
10
+ EnforcedStyle: double_quotes
11
+
12
+ Layout/LineLength:
13
+ Max: 120
14
+
15
+ Style/EndOfLine:
16
+ Enabled: False
17
+
18
+ Lint/ScriptPermission:
19
+ Enabled: False
20
+
21
+ Metrics/MethodLength:
22
+ Max: 15
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
- ## [Unreleased]
2
-
3
- ## [0.1.0] - 2022-10-11
4
-
5
- - Initial release
1
+ ## [Unreleased]
2
+
3
+ ## [0.1.0] - 2022-10-11
4
+
5
+ - Initial release
6
+
7
+ ## [0.2.0] - 2022-10-12
8
+
9
+ - Adding formatation methods
data/README.md CHANGED
@@ -1,42 +1,40 @@
1
- # CpfCnpjTools
2
-
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/cpf_cnpj_tools`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
6
-
7
- ## Installation
8
-
9
- Install the gem and add to the application's Gemfile by executing:
10
-
11
- $ bundle add cpf_cnpj_tools
12
-
13
- If bundler is not being used to manage dependencies, install the gem by executing:
14
-
15
- $ gem install cpf_cnpj_tools
16
-
17
- ## Usage
18
-
19
- For usage, import the gem and create a new instance of it:
20
-
21
- ```ruby
22
- require "cpf_cnpj_tools"
23
-
24
- generate = CpfCnpjTools::Generator.new
25
-
26
- puts generate.generate_cpf # returns a valid CPF
27
- puts generate.generate_cnpj # returns a valid cnpj
28
- puts generate.validate_cpf("999999900") # validate returning true or false
29
- puts generate.validate_cnpj("99999999000100") # validate returning true or false
30
- ```
31
-
32
- ## Contributing
33
-
34
- Bug reports and pull requests are welcome on GitHub at https://github.com/ariasdiniz/cpf_cnpj_tools. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/ariasdiniz/cpf_cnpj_tools/blob/main/CODE_OF_CONDUCT.md).
35
-
36
- ## License
37
-
38
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
39
-
40
- ## Code of Conduct
41
-
42
- Everyone interacting in the CpfCnpjTools project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/ariasdiniz/cpf_cnpj_tools/blob/main/CODE_OF_CONDUCT.md).
1
+ # CpfCnpjTools
2
+
3
+ ## Installation
4
+
5
+ Install the gem and add to the application's Gemfile by executing:
6
+
7
+ $ bundle add cpf_cnpj_tools
8
+
9
+ If bundler is not being used to manage dependencies, install the gem by executing:
10
+
11
+ $ gem install cpf_cnpj_tools
12
+
13
+ ## Usage
14
+
15
+ For usage, import the gem and create a new instance of it:
16
+
17
+ ```ruby
18
+ require "cpf_cnpj_tools"
19
+
20
+ generate = CpfCnpjTools::Generator.new
21
+
22
+ puts generate.generate_cpf # returns a valid CPF
23
+ puts generate.generate_cnpj # returns a valid cnpj
24
+ puts generate.cpf_valid?("999999900") # validate returning true or false
25
+ puts generate.cnpj_valid?("99999999000100") # validate returning true or false
26
+ puts generate.formatted?("99999999900") # validate if cpf/cnpj is formatted returning true or false
27
+ puts generate.format("16255648800") # return the formatted cpf/cnpj. Ex: 162.556.488-00
28
+ ```
29
+
30
+ ## Contributing
31
+
32
+ Bug reports and pull requests are welcome on GitHub at https://github.com/ariasdiniz/cpf_cnpj_tools. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/ariasdiniz/cpf_cnpj_tools/blob/main/CODE_OF_CONDUCT.md).
33
+
34
+ ## License
35
+
36
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
37
+
38
+ ## Code of Conduct
39
+
40
+ Everyone interacting in the CpfCnpjTools project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/ariasdiniz/cpf_cnpj_tools/blob/main/CODE_OF_CONDUCT.md).
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CpfCnpjTools
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
@@ -1,123 +1,165 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "cpf_cnpj_tools/version"
4
-
5
- module CpfCnpjTools
6
- ##
7
- # Class responsible for generating and
8
- # validating CPF and CNPJ numbers
9
- class Generator
10
- CPF1DIGIT = [10, 9, 8, 7, 6, 5, 4, 3, 2].freeze
11
- CPF2DIGIT = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2].freeze
12
- CNPJ1DIGIT = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2].freeze
13
- CNPJ2DIGIT = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2].freeze
14
-
15
- ##
16
- # Method for generating valid CPF numbers
17
- # @return String
18
- def generate_cpf
19
- base = generate_base
20
- base << generate_identifier(base, true)
21
- base << generate_identifier(base, false)
22
- base.join
23
- end
24
-
25
- ##
26
- # Method for generating valid CNPJ numbers
27
- # @return String
28
- def generate_cnpj
29
- base = generate_base(cnpj: true)
30
- base << generate_identifier(base, true, cpf: false)
31
- base << generate_identifier(base, false, cpf: false)
32
- base.join
33
- end
34
-
35
- ##
36
- # Method for validating CPF numbers.
37
- # @param cpf (String, Integer)
38
- # @return Boolean
39
- def validate_cpf(cpf)
40
- cpf_array = cpf.to_s.split('').map!(&:to_i)
41
- first_digit = cpf_array[-2]
42
- second_digit = cpf_array[-1]
43
- base_cpf = cpf_array[0..8]
44
- calculated_first_digit = generate_identifier(base_cpf, true)
45
- calculated_second_digit = generate_identifier(base_cpf << calculated_first_digit, false)
46
- return false if (first_digit != calculated_first_digit) || (second_digit != calculated_second_digit)
47
-
48
- true
49
- end
50
-
51
- ##
52
- # Method for validating CNPJ numbers.
53
- # @param cnpj (String, Integer)
54
- # @return Boolean
55
- def validate_cnpj(cnpj)
56
- cnpj_array = cnpj.to_s.split('').map!(&:to_i)
57
- first_digit = cnpj_array[-2]
58
- second_digit = cnpj_array[-1]
59
- base_cnpj = cnpj_array[0..11]
60
- calculated_first_digit = generate_identifier(base_cnpj, true, cpf: false)
61
- calculated_second_digit = generate_identifier(base_cnpj << calculated_first_digit, false, cpf: false)
62
- return false if (first_digit != calculated_first_digit) || (second_digit != calculated_second_digit)
63
-
64
- true
65
- end
66
-
67
- private
68
-
69
- ##
70
- # Generate the first numbers of CPF/CNPJ
71
- # randomly.
72
- # @param cnpj (Boolean)
73
- # @return (Array)
74
- def generate_base(cnpj: false)
75
- base_number = []
76
- 9.times do
77
- base_number << rand(10)
78
- end
79
- if cnpj
80
- base_number.delete_at(-1)
81
- base_number.push 0, 0, 0, 1
82
- end
83
- base_number
84
- end
85
-
86
- ##
87
- # Generate the first and second identifier numbers
88
- # of the CPF/CNPJ.
89
- # @param first_numbers (Array)
90
- # @param first (Boolean)
91
- # @param cpf (Boolean)
92
- # @return Integer
93
- def generate_identifier(first_numbers, first, cpf: true)
94
- multipliers = if cpf
95
- first ? CPF1DIGIT : CPF2DIGIT
96
- else
97
- first ? CNPJ1DIGIT : CNPJ2DIGIT
98
- end
99
- product = []
100
- first_numbers.length.times do |index|
101
- product << first_numbers[index] * multipliers[index]
102
- end
103
- generate_valid_digit(product)
104
- end
105
-
106
- ##
107
- # Calculates the value of a valid identifier digit.
108
- # @param digits (Array)
109
- # @return Integer
110
- def generate_valid_digit(digits)
111
- sum = 0
112
- digits.each do |item|
113
- sum += item
114
- end
115
- remainder = sum % 11
116
- if remainder < 2
117
- 0
118
- else
119
- 11 - remainder
120
- end
121
- end
122
- end
123
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "cpf_cnpj_tools/version"
4
+ require_relative "invalid_cpf_cnpj_format_exception"
5
+
6
+ module CpfCnpjTools
7
+ ##
8
+ # Class responsible for generating and
9
+ # validating CPF and CNPJ numbers
10
+ class Generator
11
+ CPF1DIGIT = [10, 9, 8, 7, 6, 5, 4, 3, 2].freeze
12
+ CPF2DIGIT = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2].freeze
13
+ CNPJ1DIGIT = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2].freeze
14
+ CNPJ2DIGIT = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2].freeze
15
+
16
+ ##
17
+ # Method for generating valid CPF numbers
18
+ # @return String
19
+ def generate_cpf(formatted: true)
20
+ base = generate_base
21
+ base << generate_identifier(base, true)
22
+ base << generate_identifier(base, false)
23
+ return base.join unless formatted
24
+
25
+ format(base.join)
26
+ end
27
+
28
+ ##
29
+ # Method for generating valid CNPJ numbers
30
+ # @return String
31
+ def generate_cnpj(formatted: true)
32
+ base = generate_base(cnpj: true)
33
+ base << generate_identifier(base, true, cpf: false)
34
+ base << generate_identifier(base, false, cpf: false)
35
+ return base.join unless formatted
36
+
37
+ format(base.join)
38
+ end
39
+
40
+ ##
41
+ # Method for validating CPF numbers.
42
+ # @param cpf (String, Integer)
43
+ # @return Boolean
44
+ def cpf_valid?(cpf)
45
+ cpf_array = remove_formatting(cpf.to_s).split("").map!(&:to_i)
46
+ first_digit = cpf_array[-2]
47
+ second_digit = cpf_array[-1]
48
+ base_cpf = cpf_array[0..8]
49
+ calculated_first_digit = generate_identifier(base_cpf, true)
50
+ calculated_second_digit = generate_identifier(base_cpf << calculated_first_digit, false)
51
+ return false if (first_digit != calculated_first_digit) || (second_digit != calculated_second_digit)
52
+
53
+ true
54
+ end
55
+
56
+ ##
57
+ # Method for validating CNPJ numbers.
58
+ # @param cnpj (String, Integer)
59
+ # @return Boolean
60
+ def cnpj_valid?(cnpj)
61
+ cnpj_array = remove_formatting(cnpj.to_s).split("").map!(&:to_i)
62
+ first_digit = cnpj_array[-2]
63
+ second_digit = cnpj_array[-1]
64
+ base_cnpj = cnpj_array[0..11]
65
+ calculated_first_digit = generate_identifier(base_cnpj, true, cpf: false)
66
+ calculated_second_digit = generate_identifier(base_cnpj << calculated_first_digit, false, cpf: false)
67
+ return false if (first_digit != calculated_first_digit) || (second_digit != calculated_second_digit)
68
+
69
+ true
70
+ end
71
+
72
+ def formatted?(cpf_or_cnpj)
73
+ number = cpf_or_cnpj.to_s
74
+ return true if (number =~ /\d{3}\.\d{3}\.\d{3}-\d{2}/) || (number =~ %r{\d{2}\.\d{3}\.\d{3}/0001-\d{2}})
75
+
76
+ false
77
+ end
78
+
79
+ ##
80
+ # Returns an unformatted CPF or CNPJ.
81
+ # If the value is already unformatted,
82
+ # the method returns the value passed as argument.
83
+ # @param cpf_or_cnpj (String, Integer)
84
+ # @return String
85
+ def remove_formatting(cpf_or_cnpj)
86
+ unformatted = cpf_or_cnpj.to_s.delete("./-")
87
+ return unformatted unless unformatted.nil?
88
+
89
+ cpf_or_cnpj.to_s
90
+ end
91
+
92
+ def format(cpf_or_cnpj)
93
+ if cpf_valid?(cpf_or_cnpj)
94
+ cpf = cpf_or_cnpj.to_s.dup
95
+ cpf.insert(3, ".")
96
+ .insert(7, ".")
97
+ .insert(-3, "-")
98
+ elsif cnpj_valid?(cpf_or_cnpj)
99
+ cnpj = cpf_or_cnpj.to_s.dup
100
+ cnpj.insert(2, ".")
101
+ .insert(6, ".")
102
+ .insert(10, "/")
103
+ .insert(-3, "-")
104
+ else
105
+ raise InvalidCpfCnpjFormatError
106
+ end
107
+ end
108
+
109
+ private
110
+
111
+ ##
112
+ # Generate the first numbers of CPF/CNPJ
113
+ # randomly.
114
+ # @param cnpj (Boolean)
115
+ # @return (Array)
116
+ def generate_base(cnpj: false)
117
+ base_number = []
118
+ 9.times do
119
+ base_number << rand(10)
120
+ end
121
+ if cnpj
122
+ base_number.delete_at(-1)
123
+ base_number.push 0, 0, 0, 1
124
+ end
125
+ base_number
126
+ end
127
+
128
+ ##
129
+ # Generate the first and second identifier numbers
130
+ # of the CPF/CNPJ.
131
+ # @param first_numbers (Array)
132
+ # @param first (Boolean)
133
+ # @param cpf (Boolean)
134
+ # @return Integer
135
+ def generate_identifier(first_numbers, first, cpf: true)
136
+ multipliers = if cpf
137
+ first ? CPF1DIGIT : CPF2DIGIT
138
+ else
139
+ first ? CNPJ1DIGIT : CNPJ2DIGIT
140
+ end
141
+ product = []
142
+ first_numbers.length.times do |index|
143
+ product << first_numbers[index] * multipliers[index]
144
+ end
145
+ generate_valid_digit(product)
146
+ end
147
+
148
+ ##
149
+ # Calculates the value of a valid identifier digit.
150
+ # @param digits (Array)
151
+ # @return Integer
152
+ def generate_valid_digit(digits)
153
+ sum = 0
154
+ digits.each do |item|
155
+ sum += item
156
+ end
157
+ remainder = sum % 11
158
+ if remainder < 2
159
+ 0
160
+ else
161
+ 11 - remainder
162
+ end
163
+ end
164
+ end
165
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ ##
4
+ # Error raised when trying to format
5
+ # an invalid CPF or CNPJ.
6
+ class InvalidCpfCnpjFormatError < StandardError
7
+ def initialize(msg = "Invalid CPF or CNPJ.")
8
+ super
9
+ end
10
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpf_cnpj_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aria Diniz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-11 00:00:00.000000000 Z
11
+ date: 2022-10-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: With this tool you will be able to generate and validate brazilian CPF
14
14
  and CNPJ numbers.
@@ -18,10 +18,6 @@ executables: []
18
18
  extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
- - ".idea/cpf_cnpj_tools.iml"
22
- - ".idea/modules.xml"
23
- - ".idea/vcs.xml"
24
- - ".idea/workspace.xml"
25
21
  - ".rubocop.yml"
26
22
  - CHANGELOG.md
27
23
  - CODE_OF_CONDUCT.md
@@ -32,6 +28,7 @@ files:
32
28
  - cpf_cnpj_tools.gemspec
33
29
  - lib/cpf_cnpj_tools.rb
34
30
  - lib/cpf_cnpj_tools/version.rb
31
+ - lib/invalid_cpf_cnpj_format_exception.rb
35
32
  - sig/cpf_cnpj_tools.rbs
36
33
  homepage: https://github.com/ariasdiniz/cpf_cnpj_tools
37
34
  licenses:
@@ -1,70 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="RUBY_MODULE" version="4">
3
- <component name="ModuleRunConfigurationManager">
4
- <shared />
5
- </component>
6
- <component name="NewModuleRootManager">
7
- <content url="file://$MODULE_DIR$">
8
- <sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
9
- <sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
10
- <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
11
- </content>
12
- <orderEntry type="jdk" jdkName="ruby-3.1.2-p20" jdkType="RUBY_SDK" />
13
- <orderEntry type="sourceFolder" forTests="false" />
14
- <orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, ruby-3.1.2-p20) [gem]" level="application" />
15
- <orderEntry type="library" scope="PROVIDED" name="bundler (v2.3.18, ruby-3.1.2-p20) [gem]" level="application" />
16
- <orderEntry type="library" scope="PROVIDED" name="json (v2.6.2, ruby-3.1.2-p20) [gem]" level="application" />
17
- <orderEntry type="library" scope="PROVIDED" name="minitest (v5.16.3, ruby-3.1.2-p20) [gem]" level="application" />
18
- <orderEntry type="library" scope="PROVIDED" name="parallel (v1.22.1, ruby-3.1.2-p20) [gem]" level="application" />
19
- <orderEntry type="library" scope="PROVIDED" name="parser (v3.1.2.0, ruby-3.1.2-p20) [gem]" level="application" />
20
- <orderEntry type="library" scope="PROVIDED" name="rainbow (v3.1.1, ruby-3.1.2-p20) [gem]" level="application" />
21
- <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, ruby-3.1.2-p20) [gem]" level="application" />
22
- <orderEntry type="library" scope="PROVIDED" name="regexp_parser (v2.5.0, ruby-3.1.2-p20) [gem]" level="application" />
23
- <orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.5, ruby-3.1.2-p20) [gem]" level="application" />
24
- <orderEntry type="library" scope="PROVIDED" name="rubocop (v1.33.0, ruby-3.1.2-p20) [gem]" level="application" />
25
- <orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.19.1, ruby-3.1.2-p20) [gem]" level="application" />
26
- <orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.11.0, ruby-3.1.2-p20) [gem]" level="application" />
27
- <orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v2.2.0, ruby-3.1.2-p20) [gem]" level="application" />
28
- </component>
29
- <component name="RakeTasksCache">
30
- <option name="myRootTask">
31
- <RakeTaskImpl id="rake">
32
- <subtasks>
33
- <RakeTaskImpl description="Build cpf_cnpj_tools-0.1.0.gem into the pkg directory" fullCommand="build" id="build" />
34
- <RakeTaskImpl id="build">
35
- <subtasks>
36
- <RakeTaskImpl description="Generate SHA512 checksum if cpf_cnpj_tools-0.1.0.gem into the checksums directory" fullCommand="build:checksum" id="checksum" />
37
- </subtasks>
38
- </RakeTaskImpl>
39
- <RakeTaskImpl description="Remove any temporary products" fullCommand="clean" id="clean" />
40
- <RakeTaskImpl description="Remove any generated files" fullCommand="clobber" id="clobber" />
41
- <RakeTaskImpl description="Build and install cpf_cnpj_tools-0.1.0.gem into system gems" fullCommand="install" id="install" />
42
- <RakeTaskImpl id="install">
43
- <subtasks>
44
- <RakeTaskImpl description="Build and install cpf_cnpj_tools-0.1.0.gem into system gems without network access" fullCommand="install:local" id="local" />
45
- </subtasks>
46
- </RakeTaskImpl>
47
- <RakeTaskImpl description="Create tag v0.1.0 and build and push cpf_cnpj_tools-0.1.0.gem to rubygems.org" fullCommand="release[remote]" id="release[remote]" />
48
- <RakeTaskImpl description="Run RuboCop" fullCommand="rubocop" id="rubocop" />
49
- <RakeTaskImpl id="rubocop">
50
- <subtasks>
51
- <RakeTaskImpl description="Autocorrect RuboCop offenses (only when it's safe)" fullCommand="rubocop:autocorrect" id="autocorrect" />
52
- <RakeTaskImpl description="Autocorrect RuboCop offenses (safe and unsafe)" fullCommand="rubocop:autocorrect_all" id="autocorrect_all" />
53
- <RakeTaskImpl description="" fullCommand="rubocop:auto_correct" id="auto_correct" />
54
- </subtasks>
55
- </RakeTaskImpl>
56
- <RakeTaskImpl description="Run tests" fullCommand="test" id="test" />
57
- <RakeTaskImpl description="" fullCommand="default" id="default" />
58
- <RakeTaskImpl description="" fullCommand="release" id="release" />
59
- <RakeTaskImpl id="release">
60
- <subtasks>
61
- <RakeTaskImpl description="" fullCommand="release:guard_clean" id="guard_clean" />
62
- <RakeTaskImpl description="" fullCommand="release:rubygem_push" id="rubygem_push" />
63
- <RakeTaskImpl description="" fullCommand="release:source_control_push" id="source_control_push" />
64
- </subtasks>
65
- </RakeTaskImpl>
66
- </subtasks>
67
- </RakeTaskImpl>
68
- </option>
69
- </component>
70
- </module>
data/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/cpf_cnpj_tools.iml" filepath="$PROJECT_DIR$/.idea/cpf_cnpj_tools.iml" />
6
- </modules>
7
- </component>
8
- </project>
data/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
- </component>
6
- </project>
data/.idea/workspace.xml DELETED
@@ -1,69 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ChangeListManager">
4
- <list default="true" id="ad094d7b-c701-4696-aa6d-20811d69a9f4" name="Changes" comment="">
5
- <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
6
- </list>
7
- <option name="SHOW_DIALOG" value="false" />
8
- <option name="HIGHLIGHT_CONFLICTS" value="true" />
9
- <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
10
- <option name="LAST_RESOLUTION" value="IGNORE" />
11
- </component>
12
- <component name="Git.Settings">
13
- <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
14
- </component>
15
- <component name="MarkdownSettingsMigration">
16
- <option name="stateVersion" value="1" />
17
- </component>
18
- <component name="ProjectId" id="2G0YdJp5P5d5f3HnUFKl61CT7ew" />
19
- <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
20
- <component name="ProjectViewState">
21
- <option name="hideEmptyMiddlePackages" value="true" />
22
- <option name="showLibraryContents" value="true" />
23
- </component>
24
- <component name="PropertiesComponent"><![CDATA[{
25
- "keyToString": {
26
- "RunOnceActivity.OpenProjectViewOnStart": "true",
27
- "RunOnceActivity.ShowReadmeOnStart": "true",
28
- "WebServerToolWindowFactoryState": "false",
29
- "nodejs_package_manager_path": "npm",
30
- "ruby.rails.projectView.checked": "true",
31
- "settings.editor.selected.configurable": "Errors"
32
- }
33
- }]]></component>
34
- <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
35
- <component name="SpringUtil" SPRING_PRE_LOADER_OPTION="true" RAKE_SPRING_PRE_LOADER_OPTION="true" RAILS_SPRING_PRE_LOADER_OPTION="true" />
36
- <component name="TaskManager">
37
- <task active="true" id="Default" summary="Default task">
38
- <changelist id="ad094d7b-c701-4696-aa6d-20811d69a9f4" name="Changes" comment="" />
39
- <created>1665527053664</created>
40
- <option name="number" value="Default" />
41
- <option name="presentableId" value="Default" />
42
- <updated>1665527053664</updated>
43
- <workItem from="1665527054889" duration="1995000" />
44
- </task>
45
- <servers />
46
- </component>
47
- <component name="TypeScriptGeneratedFilesManager">
48
- <option name="version" value="3" />
49
- </component>
50
- <component name="Vcs.Log.Tabs.Properties">
51
- <option name="TAB_STATES">
52
- <map>
53
- <entry key="MAIN">
54
- <value>
55
- <State />
56
- </value>
57
- </entry>
58
- </map>
59
- </option>
60
- </component>
61
- <component name="com.intellij.coverage.CoverageDataManagerImpl">
62
- <SUITE FILE_PATH="coverage/cpf_cnpj_tools@test_invalid_cpf.rcov" NAME="test_invalid_cpf Coverage Results" MODIFIED="1665527793284" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cpf_cnpj_tools" />
63
- <SUITE FILE_PATH="coverage/cpf_cnpj_tools@TestCpfCnpjTools.rcov" NAME="TestCpfCnpjTools Coverage Results" MODIFIED="1665528330730" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cpf_cnpj_tools" />
64
- <SUITE FILE_PATH="coverage/cpf_cnpj_tools@test_invalid_cnpj.rcov" NAME="test_invalid_cnpj Coverage Results" MODIFIED="1665527916319" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cpf_cnpj_tools" />
65
- <SUITE FILE_PATH="coverage/cpf_cnpj_tools@test_cnpj.rcov" NAME="test_cnpj Coverage Results" MODIFIED="1665527920522" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cpf_cnpj_tools" />
66
- <SUITE FILE_PATH="coverage/cpf_cnpj_tools@test_cpf.rcov" NAME="test_cpf Coverage Results" MODIFIED="1665528568296" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cpf_cnpj_tools" />
67
- <SUITE FILE_PATH="coverage/cpf_cnpj_tools@Testing.rcov" NAME="Testing Coverage Results" MODIFIED="1665528574697" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cpf_cnpj_tools" />
68
- </component>
69
- </project>