digit_checksum 0.1.1 → 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
  SHA1:
3
- metadata.gz: 175e4e3a36c8e9303127d13650327da966e13629
4
- data.tar.gz: 474383c0dd57977a2038c667de810a3a1603d9fc
3
+ metadata.gz: a7758954adbce872ca492737d6848987a4e0c3e4
4
+ data.tar.gz: 656edafd10e3c9c70658cfa7ee2fae30072a3c7e
5
5
  SHA512:
6
- metadata.gz: 71834735b4c85da42ff05ef937a24a039d21ce4d733ac5ddcd4ba2050446656176d5de3b3031a14296032a41db238f399e7f633e588284c33e2367aeba57ba8f
7
- data.tar.gz: b53f86b1bdd6a7d06f1ef77950b6aa14e23cb4d5cae061de9cb2d0e4b0a6454d04a144576e4d0632d2a6d621fe30c44848532947b62dba9ded031de6baaf8972
6
+ metadata.gz: fd65ebf917f946649b808035ef6db3949114c998bca7b81e0a53f9e917bd50aec6e90aa5217179143677c721faab6f0f9094445bad8840a7a7e415c719a9ea01
7
+ data.tar.gz: 3125454badcd0a2773719736d3b638c4fa1e9061c270936f9af8a2baef1a8a9b90e2eb70bcdbaecf292ba992c26a64ce86f5e49691546da623eb3da2534ece1e
data/README.md CHANGED
@@ -1,9 +1,12 @@
1
1
  # DigitCheckSum
2
2
 
3
+ [![Build Status](https://travis-ci.org/fidelisrafael/digit_checksum.svg)](https://travis-ci.org/fidelisrafael/digit_checksum)
4
+
3
5
  Hi there, I'm glad you're looking in this gem!
4
6
  The aim of this gem is to allow **any kind** of document to be validated e generated through calculation of [**Check Digit/Digit Checksum**](https://en.wikipedia.org/wiki/Check_digit).
5
7
 
6
8
  What this mean? This mean that you can **validate** and **generate fake numbers** of any kind of documents such: **Passport numbers**, **Federal ID number**, **Books ISBN**, or even **create your own document** number, check `examples/` for more details.
9
+ One of the greatest abilitys of this library is allowing to check digit checksum of digits in **ANY POSITION** of the document, not only for the last digits.
7
10
 
8
11
  **Tip**: Check [`examples/h4ck.rb`](examples/h4ck.rb) to see `h4ck` document specification, this is a sample document who can be manipulated using this library!
9
12
 
@@ -14,7 +17,7 @@ What this mean? This mean that you can **validate** and **generate fake numbers*
14
17
  Add this line to your application's Gemfile:
15
18
 
16
19
  ```ruby
17
- gem 'digit_checksum'
20
+ gem 'digit_checksum', '~> 0.2.0'
18
21
  ```
19
22
 
20
23
  And then execute:
@@ -38,25 +41,24 @@ Don't you believe me? See for yourself an example:
38
41
  require 'digit_checksum'
39
42
 
40
43
  class CNPJ < DigitChecksum::BaseDocument
41
- # masks that will be used to calculate each check digit
42
- digits_verify_mask first: %w(5 4 3 2 9 8 7 6 5 4 3 2),
43
- second: %w(6 5 4 3 2 9 8 7 6 5 4 3 2)
44
+ # weights masks that will be used to calculate each check digit
45
+ set_verify_digits_weights first: %w(5 4 3 2 9 8 7 6 5 4 3 2),
46
+ second: %w(6 5 4 3 2 9 8 7 6 5 4 3 2)
44
47
 
45
48
  # remove any non digit from document number
46
- # this is the default value, feel free to override
47
- clear_number_regexp %r{[^(\d+)]}
49
+ set_clear_number_regexp %r{[^(\d+)]}
48
50
 
49
51
  # use modulo 11 as algorithm (can be any value)
50
- division_factor_modulo 11
52
+ set_division_factor_modulo 11
51
53
 
52
54
  # match format such as: 99.999.999/9999-99 | 99-999-999/9999-99 | 99999999/999999 | 99999999999999
53
- valid_format_regexp %r{(\d{2})[-.]?(\d{3})[-.]?(\d{3})[\/]?(\d{4})[-.]?(\d{2})}
55
+ set_valid_format_regexp %r{(\d{2})[-.]?(\d{3})[-.]?(\d{3})[\/]?(\d{4})[-.]?(\d{2})}
54
56
 
55
57
  # mask utilized to prettify doc number
56
- pretty_format_mask %(%s.%s.%s/%s-%s)
58
+ set_pretty_format_mask %(%s.%s.%s/%s-%s)
57
59
 
58
60
  # numbers sampled to generate new document numbers
59
- generator_numbers (0..9).to_a
61
+ set_generator_numbers (0..9).to_a
60
62
  end
61
63
  ```
62
64
 
@@ -67,8 +69,20 @@ The example below it's intent to validated brazilian `CNPJ` documents, equivalen
67
69
  ```ruby
68
70
  CNPJ.generate # "79.552.921/0786-55"
69
71
 
70
- CNPJ.generate(false) # 85215313606778 -- without pretty formating
72
+ # without pretty formating
73
+ CNPJ.generate(false) # 85215313606778
74
+
75
+ # You can calculate only random root numbers
76
+ root_numbers = CNPJ.generate_root_numbers
77
+ # => [3, 8, 9, 3, 2, 5, 9, 5, 0, 2, 6, 6]
71
78
 
79
+ CNPJ.calculate_verify_digits(root_numbers) # [6,7]
80
+
81
+ # To insert the verify digits in the CORRECT positions
82
+ # Remember: The correct position MAY NOT be the last positions
83
+ # So use `append_verify_digits` to handle this
84
+ CNPJ.pretty(CNPJ.append_verify_digits(root_numbers))
85
+ => "38.932.595/0266-67"
72
86
  ```
73
87
 
74
88
 
@@ -79,6 +93,21 @@ CNPJ.calculate_verify_digits("123.456.78/0001") # [9,5]
79
93
 
80
94
  # invalid format
81
95
  CNPJ.calculate_verify_digits("123.456.78/00001") # []
96
+
97
+ CNPJ.pretty(CNPJ.append_verify_digits("123.456.78/0001")) # "123.456.78/0001-95"
98
+
99
+ document = "123.456.78/0001-95"
100
+ CNPJ.remove_verify_digits!(document)
101
+ # [9,5]
102
+ document
103
+ # => 123456780001
104
+ CNPJ.pretty(CNPJ.append_verify_digits(document))
105
+ # => "12.345.678/0001-95"
106
+
107
+ # The last two characters position
108
+ CNPJ.obtain_verify_digits_positions
109
+ # => [12, 13]
110
+
82
111
  ```
83
112
 
84
113
  #### Validate documents numbers
@@ -98,33 +127,90 @@ CNPJ.valid?(12345678000195) # true
98
127
  #### Normalize and format documents number
99
128
 
100
129
  ```ruby
101
- # belows returns [1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 1, 9, 5]
102
- CNPJ.normalize_number("123.456.78/0001-95")
103
130
 
104
- CNPJ.normalize_number_to_s("123.456.78/0001-95") # "12345678000195"
131
+ # Get a array representation of document number
132
+ CNPJ.normalize_number("123.456.78/0001-95")
133
+ # => [1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 1, 9, 5]
105
134
 
106
- CNPJ.pretty_formatted("123456780001") # "123.456.78/0001-95" -- also aliased as CNPJ.pretty(number) or CNPJ.formatted(number)
135
+ # also aliased as CNPJ.pretty_formatted(number) or CNPJ.formatted(number)
136
+ CNPJ.pretty("12345678000195") # "123.456.78/0001-95"
107
137
 
108
- CNPJ.clear_number("123.456.78/0001-95") # "12345678000195" -- also aliased as CNPJ.stripped(number)
138
+ # also aliased as CNPJ.clear_number(number)
139
+ CNPJ.stripped("123.456.78/0001-95")
140
+ # => "12345678000195"
109
141
  ```
110
142
 
111
143
  See `examples/`for more detailed samples.
112
144
 
113
145
 
146
+ ---
147
+
148
+ ### Custom verify digits positions
149
+
150
+ In **most**(*but not necessarily all*) documents formats the check digits positions are the last characters, but this library also allow you
151
+ to calculate check digits in any position in the middle of the document number, see an example:
152
+
153
+ ```ruby
154
+ class MyDocument < DigitChecksum::BaseDocument
155
+ set_division_factor_modulo 11
156
+
157
+ set_clear_number_regexp %r{[^(\d+)]}
158
+
159
+ set_root_documents_digits_count 10
160
+
161
+ set_verify_digits_positions [8, 11]
162
+
163
+ set_verify_digits_weights first: %w(1 3 4 5 6 7 8 10),
164
+ last: %w(3 2 10 9 8 7 6 5 4 3 2)
165
+
166
+ set_valid_format_regexp %r{(\d{3})[-.]?(\d{3})[-.]?(\d{3})[-.]?(\d{3})}
167
+
168
+ set_pretty_format_mask %(%s.%s.%s.%s)
169
+
170
+ set_generator_numbers (0..9).to_a
171
+ end
172
+
173
+ MyDocument.obtain_verify_digits_positions # [8, 11]
174
+ # document number without check digits
175
+ MyDocument.calculate_verify_digits("110.042.49.11")
176
+ # => [1, 3]
177
+ document = MyDocument.append_verify_digits("110.042.49.11")
178
+ # => "110042491113"
179
+ MyDocument.pretty(document)
180
+ # => "110.042.491.113"
181
+ MyDocument.remove_verify_digits!(document)
182
+ # => [1, 3]
183
+ document
184
+ # => "1100424911"
185
+ document = MyDocument.append_verify_digits(document)
186
+ # => "110042491113"
187
+ MyDocument.pretty(document)
188
+ # => "110.042.491.113"
189
+ # document number with check digits in the right positions(8, 11)
190
+ MyDocument.valid?("110.042.491.113")
191
+ # => true
192
+ # document number with wrong check digits in the right positions
193
+ MyDocument.valid?("110.042.492.113")
194
+ # => false
195
+ MyDocument.pretty(MyDocument.append_verify_digits("110.042.49.11"))
196
+ # => "110.042.491.113"
197
+ ```
198
+
199
+ ---
200
+
114
201
  ## Development
115
202
 
116
203
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
117
204
 
118
- To install this gem onto your local machine, run `bundle exec rake install`.
205
+ To install this gem onto your local machine, run `bundle exec rake install`.
119
206
  To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
120
207
 
121
208
  ## Contributing
122
209
 
123
- Bug reports and pull requests are welcome on GitHub at https://github.com/fidelisrafael/digit_checksum.
210
+ Bug reports and pull requests are welcome on GitHub at https://github.com/fidelisrafael/digit_checksum.
124
211
  This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
125
212
 
126
213
 
127
214
  ## License
128
215
 
129
216
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
130
-
@@ -1,20 +1,20 @@
1
1
  class CNPJ < DigitChecksum::BaseDocument
2
- digits_verify_mask first: %w(5 4 3 2 9 8 7 6 5 4 3 2),
3
- second: %w(6 5 4 3 2 9 8 7 6 5 4 3 2)
2
+ set_verify_digits_weights first: %w(5 4 3 2 9 8 7 6 5 4 3 2),
3
+ second: %w(6 5 4 3 2 9 8 7 6 5 4 3 2)
4
4
 
5
5
  # MOD 11
6
- division_factor_modulo 11
6
+ set_division_factor_modulo 11
7
7
 
8
8
  # remove any non digit from document number
9
- clear_number_regexp %r{[^(\d+)]}
9
+ set_clear_number_regexp %r{[^(\d+)]}
10
10
 
11
11
  # match format such as: 99.999.999/9999-99 | 99-999-999/9999-99 | 99999999/999999 | 99999999999999
12
- valid_format_regexp %r{(\d{2})[-.]?(\d{3})[-.]?(\d{3})[\/]?(\d{4})[-.]?(\d{2})}
12
+ set_valid_format_regexp %r{(\d{2})[-.]?(\d{3})[-.]?(\d{3})[\/]?(\d{4})[-.]?(\d{2})}
13
13
 
14
- pretty_format_mask %(%s.%s.%s/%s-%s)
14
+ set_pretty_format_mask %(%s.%s.%s/%s-%s)
15
15
 
16
16
  # numbers sampled to generate new document numbers
17
- generator_numbers (0..9).to_a
17
+ set_generator_numbers (0..9).to_a
18
18
  end
19
19
 
20
20
  CNPJ.generate
@@ -1,20 +1,20 @@
1
1
  class CPF < DigitChecksum::BaseDocument
2
- digits_verify_mask first: %w(10 9 8 7 6 5 4 3 2),
3
- second: %w(11 10 9 8 7 6 5 4 3 2)
2
+ set_verify_digits_weights first: %w(10 9 8 7 6 5 4 3 2),
3
+ second: %w(11 10 9 8 7 6 5 4 3 2)
4
4
 
5
5
  # MOD 11
6
- division_factor_modulo 11
6
+ set_division_factor_modulo 11
7
7
 
8
8
  # remove any non digit from document number
9
- clear_number_regexp %r{[^(\d+)]}
9
+ set_clear_number_regexp %r{[^(\d+)]}
10
10
 
11
11
  # match format such as: 999.999.999-99 | 999-999-999-99 | 99999999999
12
- valid_format_regexp %r{(\d{3})[-.]?(\d{3})[-.]?(\d{3})[-.]?(\d{2})}
12
+ set_valid_format_regexp %r{(\d{3})[-.]?(\d{3})[-.]?(\d{3})[-.]?(\d{2})}
13
13
 
14
- pretty_format_mask %(%s.%s.%s-%s)
14
+ set_pretty_format_mask %(%s.%s.%s-%s)
15
15
 
16
16
  # numbers sampled to generate new document numbers
17
- generator_numbers (0..9).to_a
17
+ set_generator_numbers (0..9).to_a
18
18
  end
19
19
 
20
20
  CPF.generate
data/examples/h4ck.rb CHANGED
@@ -12,24 +12,24 @@ class H4ck < DigitChecksum::BaseDocument
12
12
 
13
13
  PROGRAMMINGS_LANGUAGES.default = 'Unknown'
14
14
 
15
- division_factor_modulo 11
15
+ set_division_factor_modulo 11
16
16
 
17
- digits_verify_mask first: %w(17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2),
18
- second: %w(18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2),
19
- last: %w(19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2)
17
+ set_verify_digits_weights first: %w(17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2),
18
+ second: %w(18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2),
19
+ last: %w(19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2)
20
20
 
21
21
  # remove any non digit and 0x character from document number
22
- clear_number_regexp %r{(0x)|[^\d+]}
22
+ set_clear_number_regexp %r{(0x)|[^\d+]}
23
23
 
24
24
  # 0101&&1111(0x01)||[16]<07>!29
25
25
  # Ex: 0101&&1111(0x01)||[16]<07>!29-110
26
- valid_format_regexp %r{(\d{4})(\d{4})\(?[0x]?(\d{2})\)?\|?\|?\[?(\d{2})\]?\<?(\d{2})\>?\!?(\d{2})\-?(\d{3})}
26
+ set_valid_format_regexp %r{(\d{4})(\d{4})\(?[0x]?(\d{2})\)?\|?\|?\[?(\d{2})\]?\<?(\d{2})\>?\!?(\d{2})\-?(\d{3})}
27
27
 
28
28
  # XXXX&&XXXX(0xZZ)||[YY]<MM>!DD-VVV;
29
- pretty_format_mask %(%s&&%s(0x%s)||[%s]<%s>!%s-%s;)
29
+ set_pretty_format_mask %(%s&&%s(0x%s)||[%s]<%s>!%s-%s;)
30
30
 
31
31
  # numbers sampled to generate new document numbers
32
- generator_numbers (0..9).to_a
32
+ set_generator_numbers (0..9).to_a
33
33
 
34
34
  def self.favorite_language(document_number)
35
35
  document_number = normalize_document_number(document_number)
@@ -2,22 +2,38 @@ module DigitChecksum
2
2
  class BaseDocument
3
3
 
4
4
  CONSTANTS_MAP = [
5
- :digits_verify_mask,
5
+ :root_documents_digits_count,
6
+ :verify_digits_positions,
7
+ :digits_ignore_positions,
6
8
  :division_factor_modulo,
7
- :valid_format_regexp,
9
+ :verify_digits_weights,
8
10
  :clear_number_regexp,
11
+ :valid_format_regexp,
9
12
  :pretty_format_mask,
10
- :generator_numbers
13
+ :generator_numbers,
14
+ :document_length
11
15
  ]
12
16
 
13
17
  class << self
14
18
  def generate(formatted = true)
15
- doc_numbers = root_document_digits_count.times.map { get_generator_numbers.sample }
16
- doc_numbers.concat(calculate_verify_digits(doc_numbers))
19
+ document_number = append_verify_digits(generate_root_numbers)
20
+
21
+ formatted ? pretty_formatted(document_number) : document_number
22
+ end
17
23
 
18
- normalized_number = normalize_number_to_s(doc_numbers)
24
+ def append_verify_digits(document_number)
25
+ document_number = normalize_number(document_number)
26
+ verify_digits = calculate_verify_digits(document_number)
27
+
28
+ obtain_verify_digits_positions.each_with_index {|position, index|
29
+ document_number.insert(position + index, verify_digits.shift)
30
+ }
31
+
32
+ normalize_number_to_s(document_number.compact)
33
+ end
19
34
 
20
- formatted ? pretty_formatted(normalized_number) : normalized_number
35
+ def generate_root_numbers
36
+ root_document_digits_count.times.map { get_generator_numbers.sample }
21
37
  end
22
38
 
23
39
  def valid?(document_number)
@@ -28,13 +44,36 @@ module DigitChecksum
28
44
  return false if normalized_document.nil? || normalized_document.empty?
29
45
 
30
46
  # if document dont match the exact size, it's invalid
31
- return false unless valid_length?(document_number)
47
+ return false unless valid_length?(normalized_document)
32
48
 
33
- # remove last two digits to be verified
34
- last_digits = normalized_document.slice!(-verify_digits_count,verify_digits_count).map(&:to_i)
49
+ # remove verify digits to be verified
50
+ verify_digits = remove_verify_digits!(normalized_document)
51
+
52
+ # calculate the new digits based on root document number
35
53
  digits = calculate_verify_digits(normalized_document)
36
54
 
37
- last_digits == digits
55
+ verify_digits == digits
56
+ end
57
+
58
+ def remove_verify_digits!(document_number)
59
+ document_number.to_s.gsub!(get_clear_number_regexp, '')
60
+
61
+ obtain_verify_digits_positions.each_with_index.flat_map {|position, index|
62
+ document_number.slice!((position - index), 1)
63
+ }.map(&:to_i)
64
+ end
65
+
66
+ def obtain_verify_digits_positions
67
+ begin
68
+ get_verify_digits_positions
69
+ # when value its not set
70
+ rescue NameError => e
71
+ default_verify_digits_position
72
+ end
73
+ end
74
+
75
+ def default_verify_digits_position
76
+ verify_digits_count.times.map {|i| root_document_digits_count + i }
38
77
  end
39
78
 
40
79
  def invalid?(document_number)
@@ -44,23 +83,28 @@ module DigitChecksum
44
83
  def calculate_verify_digits(document_number)
45
84
  return [] unless correct_length_based_on_first_mask?(document_number)
46
85
 
86
+ document_number = normalize_number(document_number)
47
87
  division_modulo = get_division_factor_modulo
88
+ digits_positions = obtain_verify_digits_positions.dup
48
89
  digits = []
49
90
 
50
- get_digits_verify_mask.each do |position, mask|
51
- document_number = root_document_number(document_number, mask)
52
-
53
- verify_digit = calculate_verify_digit(document_number, mask, division_modulo)
91
+ get_verify_digits_weights.each_with_index do |data, index|
92
+ position, mask = *data
93
+ current_document = root_document_number(document_number, mask)
94
+ verify_digit = calculate_verify_digit(current_document, mask, division_modulo)
54
95
 
55
96
  digits << verify_digit
56
- document_number << verify_digit
97
+ digit_position = digits_positions.shift + index
98
+
99
+ # just update ref
100
+ document_number.insert(digit_position, verify_digit)
57
101
  end
58
102
 
59
103
  digits
60
104
  end
61
105
 
62
106
  def root_document_number(document_number, mask = nil)
63
- mask ||= get_digits_verify_mask.values[0]
107
+ mask ||= get_verify_digits_weights.values[0]
64
108
 
65
109
  normalize_document_number(document_number, mask.size)
66
110
  end
@@ -84,9 +128,11 @@ module DigitChecksum
84
128
  end
85
129
 
86
130
  def pretty_formatted(document_number)
87
- return "" if normalize_document_number(document_number).empty?
131
+ normalized_doc = normalize_number_to_s(document_number)
132
+
133
+ return "" if normalized_doc.empty?
88
134
 
89
- numbers = document_number.to_s.scan(get_valid_format_regexp).flatten
135
+ numbers = normalized_doc.to_s.scan(get_valid_format_regexp).flatten
90
136
 
91
137
  # document has a value but it's not valid
92
138
  return "" if numbers.empty?
@@ -103,11 +149,16 @@ module DigitChecksum
103
149
  def calculate_digits_data(document_number, mask, division_factor)
104
150
  sum = calculate_digits_sum(document_number, mask)
105
151
  quotient = (sum / division_factor)
106
- rest = (sum % division_factor)
152
+
153
+ rest = calculate_digits_sum_rest(sum, quotient, division_factor)
107
154
 
108
155
  { sum: sum, quotient: quotient, rest: rest, verify_digit: digit_verify(rest, division_factor) }
109
156
  end
110
157
 
158
+ def calculate_digits_sum_rest(sum, quotient, division_factor)
159
+ (sum % division_factor)
160
+ end
161
+
111
162
  def calculate_digits_sum(document_number, mask)
112
163
  normalized_document_number = normalize_document_number(document_number)
113
164
 
@@ -122,15 +173,19 @@ module DigitChecksum
122
173
  end
123
174
 
124
175
  def first_verify_mask
125
- get_digits_verify_mask.values[0]
176
+ get_verify_digits_weights.values[0]
126
177
  end
127
178
 
128
179
  def verify_digits_count
129
- get_digits_verify_mask.size
180
+ get_verify_digits_weights.size
130
181
  end
131
182
 
132
183
  def root_document_digits_count
133
- first_verify_mask.size
184
+ begin
185
+ get_root_documents_digits_count
186
+ rescue NameError => e
187
+ first_verify_mask.size
188
+ end
134
189
  end
135
190
 
136
191
  def correct_length_based_on_first_mask?(document_number)
@@ -148,17 +203,13 @@ module DigitChecksum
148
203
  alias :formatted :pretty_formatted
149
204
  alias :pretty :pretty_formatted
150
205
 
151
- CONSTANTS_MAP.each do |const_identifier|
152
- define_method "get_#{const_identifier}" do
153
- const_name = const_identifier.to_s.upcase
154
-
155
- self.const_get(const_identifier.upcase)
206
+ CONSTANTS_MAP.each do |const_name|
207
+ define_method "get_#{const_name}" do
208
+ self.const_get(const_name.to_s.upcase)
156
209
  end
157
210
 
158
- define_method const_identifier do |arg|
159
- const_name = const_identifier.to_s.upcase
160
-
161
- self.const_set(const_name, arg)
211
+ define_method "set_#{const_name}" do |value|
212
+ self.const_set(const_name.to_s.upcase, value)
162
213
  end
163
214
  end
164
215
  end
@@ -1,3 +1,3 @@
1
1
  module DigitChecksum
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: digit_checksum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafael Fidelis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-13 00:00:00.000000000 Z
11
+ date: 2016-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler