dockcheck 2.0.3 → 2.0.4

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: ed9065176dd1b7f5415c1aec2868487cfd32132596d12e293e14576ac70bb1ed
4
- data.tar.gz: ad0d88dfa11855d9854a201c3382c0afc93dcb577f9c8456d917434f9d3a3b57
3
+ metadata.gz: 16925d52a82de3e76d124db3c4e1ada4ccac3b5808c6f87c4ee09440544d3346
4
+ data.tar.gz: 17c529dcc327c32d75a60a3b1a3effb8446061cfe43fa6cc408ba637feb750d6
5
5
  SHA512:
6
- metadata.gz: ee4a9956d5790887cf7cbac5e5251e17344939d5ee52725a938ef19a1b18b7cb724eec900476d0fb49cf36f704efb7da5b4658784770f94d25cafd795ea97bc9
7
- data.tar.gz: bb1d2dd63c048ccba919dc685485af9bdc3ee3a555d5940f3699d7097aa89e235080f6771d28bf9f112abb0b2538de86f49e9305a8748dbbe2aad9f6ea3ac5fc
6
+ metadata.gz: 77d35ed631c258e118419b95a5438077fdcf6742fc88a623774412a1f56d7ffe74eabc0a35b97b6d3adf22494892f390676e83b0fdb237b35277d6c3489a0253
7
+ data.tar.gz: 3f3adaf5d388d4ca2a13f43ffbd631ec3fce57424dee1a4c698c8efd721488d05c9ce5cdd94c9e9e0cd612939009b34b48d7e25051acbf95cc2a1e6990fcefeb
data/lib/dockcheck/bik.rb CHANGED
@@ -3,7 +3,6 @@
3
3
  require "#{__dir__}/dockhelper.rb"
4
4
 
5
5
  class DockCheck::Bik
6
-
7
6
  def self.check(document)
8
7
  bik = document[:content]
9
8
 
@@ -20,5 +19,4 @@ class DockCheck::Bik
20
19
  def self.name
21
20
  :bik
22
21
  end
23
-
24
22
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class DockHelper
4
-
5
4
  def self.numberize_document(numbers)
6
5
  numbers.split('').map(&:to_i)
7
6
  end
@@ -13,8 +12,7 @@ class DockHelper
13
12
  def self.prepare_doc(doc)
14
13
  new_data = doc
15
14
  new_data[:correct] = false
16
- new_data[:error] = ""
15
+ new_data[:error] = ''
17
16
  new_data
18
17
  end
19
-
20
18
  end
data/lib/dockcheck/inn.rb CHANGED
@@ -3,9 +3,9 @@
3
3
  require "#{__dir__}/dockhelper.rb"
4
4
 
5
5
  class DockCheck::Inn
6
- @@ten_digits_map = [2, 4, 10, 3, 5, 9, 4, 6, 8]
7
- @@twelve_digits_first_map = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
8
- @@twelve_digits_second_map = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
6
+ @ten_digits_map = [2, 4, 10, 3, 5, 9, 4, 6, 8]
7
+ @twelve_digits_first_map = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
8
+ @twelve_digits_second_map = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
9
9
 
10
10
  def self.check(document)
11
11
  inn = DockHelper.numberize_document(document[:content])
@@ -26,12 +26,10 @@ class DockCheck::Inn
26
26
  :inn
27
27
  end
28
28
 
29
- private
30
-
31
29
  def self.control_sum_calc(inn, coefficients)
32
30
  inn
33
31
  .zip(coefficients)
34
- .filter { |(a, b)| !b.nil? }
32
+ .filter { |(_a, b)| !b.nil? }
35
33
  .reduce(0) { |acc, (a, b)| a * b + acc }
36
34
  end
37
35
 
@@ -41,7 +39,7 @@ class DockCheck::Inn
41
39
 
42
40
  def self.ten_digit_inn_valid?(inn)
43
41
  last_number = inn.last
44
- control_sum = control_sum_calc(inn, @@ten_digits_map)
42
+ control_sum = control_sum_calc(inn, @ten_digits_map)
45
43
  last_number == sum_div(control_sum)
46
44
  end
47
45
 
@@ -49,8 +47,8 @@ class DockCheck::Inn
49
47
  last_number = inn.last
50
48
  penult_number = inn.fetch(10)
51
49
 
52
- first_sum = control_sum_calc(inn, @@twelve_digits_first_map)
53
- second_sum = control_sum_calc(inn, @@twelve_digits_second_map)
50
+ first_sum = control_sum_calc(inn, @twelve_digits_first_map)
51
+ second_sum = control_sum_calc(inn, @twelve_digits_second_map)
54
52
 
55
53
  penult_number == sum_div(first_sum) && last_number == sum_div(second_sum)
56
54
  end
data/lib/dockcheck/kpp.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class DockCheck::Kpp
4
-
5
4
  def self.check(document)
6
5
  kpp = document[:content]
7
6
 
@@ -19,8 +18,6 @@ class DockCheck::Kpp
19
18
  :kpp
20
19
  end
21
20
 
22
- private
23
-
24
21
  def self.kpp_valid?(kpp)
25
22
  !!(kpp =~ /^[0-9]{4}[0-9A-Z]{2}[0-9]{3}$/)
26
23
  end
@@ -3,18 +3,12 @@
3
3
  require "#{__dir__}/dockhelper.rb"
4
4
 
5
5
  class DockCheck::Ogrn
6
-
7
6
  def self.check(document)
8
7
  ogrn = document[:content]
9
8
 
10
9
  case ogrn.length
11
10
  when 13
12
- document[:correct] =
13
- if DockHelper.only_digits?(ogrn)
14
- ogrn_valid?(ogrn)
15
- else
16
- false
17
- end
11
+ document[:correct] = DockHelper.only_digits?(ogrn) ? ogrn_valid?(ogrn) : false
18
12
  else
19
13
  document[:error] = 'Incorrect ogrn numbers count!'
20
14
  end
@@ -26,11 +20,10 @@ class DockCheck::Ogrn
26
20
  :ogrn
27
21
  end
28
22
 
29
- private
30
-
31
23
  def self.ogrn_valid?(ogrn)
32
24
  first_code = ogrn[0..12].to_i
33
25
  second_code = (first_code / 11).floor * 11
26
+
34
27
  result_sum = (first_code - second_code) % 10
35
28
  result_sum == ogrn[13].to_i
36
29
  end
@@ -3,22 +3,8 @@
3
3
  require "#{__dir__}/dockhelper.rb"
4
4
 
5
5
  class DockCheck::Ogrnip
6
-
7
6
  def self.check(document)
8
- ogrnip = document[:content]
9
-
10
- case ogrnip.length
11
- when 15
12
- document[:correct] =
13
- if DockHelper.only_digits?(ogrnip)
14
- ogrnip_valid?(ogrnip)
15
- else
16
- false
17
- end
18
- else
19
- document[:error] = 'Incorrect ogrnip numbers count!'
20
- end
21
-
7
+ validate_ogrnip(document)
22
8
  document
23
9
  end
24
10
 
@@ -26,12 +12,21 @@ class DockCheck::Ogrnip
26
12
  :ogrnip
27
13
  end
28
14
 
29
- private
30
-
31
15
  def self.ogrnip_valid?(ogrnip)
32
16
  first_code = ogrnip[0..13].to_i
33
17
  second_code = (first_code / 13).floor * 13
34
- result_sum = (first_code - second_code) % 10
35
- result_sum == ogrnip[14].to_i
18
+
19
+ sum = (first_code - second_code) % 10
20
+ sum == ogrnip[14].to_i
21
+ end
22
+
23
+ def self.validate_ogrnip(data)
24
+ ogrnip = data[:content]
25
+ case ogrnip.length
26
+ when 15
27
+ data[:correct] = DockHelper.only_digits?(ogrnip) ? ogrnip_valid?(ogrnip) : false
28
+ else
29
+ data[:error] = 'Incorrect ogrnip numbers count!'
30
+ end
36
31
  end
37
32
  end
@@ -3,7 +3,7 @@
3
3
  require "#{__dir__}/dockhelper.rb"
4
4
 
5
5
  class DockCheck::Snils
6
- @@coefficients_map = [9, 8, 7, 6, 5, 4, 3, 2, 1]
6
+ @coefficients_map = [9, 8, 7, 6, 5, 4, 3, 2, 1]
7
7
 
8
8
  def self.check(document)
9
9
  snils = DockHelper.numberize_document(document[:content])
@@ -23,28 +23,23 @@ class DockCheck::Snils
23
23
  :snils
24
24
  end
25
25
 
26
- private
27
-
28
26
  def self.control_sum_calc(inn, coefficients)
29
27
  inn
30
28
  .zip(coefficients)
31
- .filter { |(a, b)| !b.nil? }
29
+ .filter { |(_a, b)| !b.nil? }
32
30
  .reduce(0) { |acc, (a, b)| a * b + acc }
33
31
  end
34
32
 
35
33
  def self.check_control_sum(control_sum)
36
- if control_sum < 100
37
- control_sum
38
- elsif control_sum == 100
39
- 0
40
- else
41
- rem = control_sum % 101
42
- rem == 100 ? 0 : rem
43
- end
34
+ return control_sum if control_sum < 100
35
+ return 0 if control_sum == 100
36
+
37
+ rem = control_sum % 101
38
+ rem == 100 ? 0 : rem
44
39
  end
45
40
 
46
41
  def self.snils_valid?(snils, last_digits)
47
- control_sum = control_sum_calc(snils, @@coefficients_map)
42
+ control_sum = control_sum_calc(snils, @coefficients_map)
48
43
  last_digits == check_control_sum(control_sum)
49
44
  end
50
45
  end
data/lib/dockcheck.rb CHANGED
@@ -1,11 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class DockCheck
4
- @checkers_map
5
-
6
- def initialize()
7
- @checkers_map = {inn: Inn, snils: Snils, bik: Bik, kpp: Kpp, ogrnip: Ogrnip, ogrn: Ogrn}
8
- self
4
+ def initialize
5
+ @checkers_map = { inn: Inn, snils: Snils, bik: Bik, kpp: Kpp, ogrnip: Ogrnip, ogrn: Ogrn }
9
6
  end
10
7
 
11
8
  def check(data)
@@ -30,23 +27,28 @@ class DockCheck
30
27
  checker = doc[:type]
31
28
  result = doc
32
29
 
33
- if checker
34
- if @checkers_map.key?(checker.to_sym)
35
- if doc[:content]
36
- result = @checkers_map[checker].check(doc)
37
- else
38
- result[:error] = 'Content field required!'
39
- end
40
- else
41
- result[:error] = 'Incorrect checker!'
42
- end
43
- else
30
+ unless checker
44
31
  result[:error] = 'Document type field required!'
32
+ return result
33
+ end
34
+
35
+ if @checkers_map.key?(checker.to_sym)
36
+ result = check_control_sum(result)
37
+ else
38
+ result[:error] = 'Incorrect checker!'
45
39
  end
46
40
 
47
41
  result
48
42
  end
49
43
 
44
+ def check_control_sum(data)
45
+ if data[:content]
46
+ @checkers_map[data[:type]].check(data)
47
+ else
48
+ data[:error] = 'Content field required!'
49
+ data
50
+ end
51
+ end
50
52
  end
51
53
 
52
- Dir[File.join(__dir__, 'dockcheck', '*.rb')].each { |file| require file }
54
+ Dir[File.join(__dir__, 'dockcheck', '*.rb')].sort.each { |file| require file }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dockcheck
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artem Solomatin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-06 00:00:00.000000000 Z
11
+ date: 2022-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec