dockcheck 1.2.0 → 1.5.2

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: 027af785cee633ef5163920a922060b0d4e0a45d4838af9163d6d19a10d3b3c4
4
- data.tar.gz: 20122e58faba46a09c9a4229c561f7931e1a18b27b70c08f05622024a0b69dc3
3
+ metadata.gz: 4db77327141c60927c497dac9420f9f054810d1812cee41565a7a0bb5ce1524a
4
+ data.tar.gz: cb28c66b5914807ae53ed9509068a7d269285ff76c9350d0852b6021e194befc
5
5
  SHA512:
6
- metadata.gz: 89e3a3db096788adce328d6f3f63b0a91399db131d6ac306346a9c52a3d4f5ffac7176d03c68e68b3bd62d03e36333810665f7e1959932b9d2815ac2b22d31fe
7
- data.tar.gz: 0ae4008a704d610c8649ec4d9b4024f0579c41f944c8d6005a47d8aea9921448178ede1367be2b09b299bac84e2d0f090d45d850d7ec87e7d0c3b6d47524f2fe
6
+ metadata.gz: 94e25d852a60b6dc4518fb98aa07da7ef09f1ab636204d79d1397df48cf69f2d516ec74e200eef076e8d5843533cdf3b46e4324cca8271519e4fda28b2e93964
7
+ data.tar.gz: b5ce4d3d479da2c0fbcdea780686dc67fbb40f8b40473669142c5809e0ddf885f2718b80a878c936e2702dadc1224249c15942946a7b9bdc35c50518728e9c97
data/lib/dockcheck.rb CHANGED
@@ -2,8 +2,10 @@
2
2
 
3
3
  class DockCheck
4
4
  @current_checker
5
+ @checkers_map
5
6
 
6
7
  def initialize(checker = :inn)
8
+ @checkers_map = {inn: Inn, snils: Snils, bik: Bik, kpp: Kpp, ogrnip: Ogrnip, ogrn: Ogrn}
7
9
  dispatch(checker)
8
10
  self
9
11
  end
@@ -12,6 +14,15 @@ class DockCheck
12
14
  @current_checker.check(numbers, *other_data)
13
15
  end
14
16
 
17
+ def check_many(documents)
18
+ documents.each do |document|
19
+ checker = document[:type]
20
+ doc = document[:content]
21
+ extra = document[:extra]
22
+ document[:correct] = @checkers_map[checker].new.check(doc, extra)
23
+ end
24
+ end
25
+
15
26
  def change_checker(checker)
16
27
  dispatch(checker)
17
28
  self
@@ -23,16 +34,12 @@ class DockCheck
23
34
 
24
35
  private
25
36
  def dispatch(checker)
26
- checkers_map = {inn: Inn, snils: Snils, bik: Bik}
27
-
28
- if checkers_map.key?(checker.to_sym)
29
- @current_checker = checkers_map[checker].new
37
+ if @checkers_map.key?(checker.to_sym)
38
+ @current_checker = @checkers_map[checker].new
30
39
  else
31
40
  raise 'Incorrect checker!'
32
41
  end
33
42
  end
34
43
  end
35
44
 
36
- require 'dockcheck/inn'
37
- require 'dockcheck/snils'
38
- require 'dockcheck/bik'
45
+ Dir[File.join(__dir__, 'dockcheck', '*.rb')].each { |file| require file }
data/lib/dockcheck/bik.rb CHANGED
@@ -1,11 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "#{__dir__}/dockhelper.rb"
4
+
3
5
  class DockCheck::Bik
4
6
 
5
7
  def check(bik, _)
6
8
  case bik.length
7
9
  when 9
8
- bik_valid?(bik)
10
+ DockHelper.only_digits?(bik)
9
11
  else
10
12
  raise StandardError.new 'Incorrect bik numbers count!'
11
13
  end
@@ -15,12 +17,4 @@ class DockCheck::Bik
15
17
  :bik
16
18
  end
17
19
 
18
- private
19
- def prepare_bik(numbers)
20
- numbers.split('').map(&:to_i)
21
- end
22
-
23
- def bik_valid?(bik)
24
- bik.scan(/\D/).empty?
25
- end
26
20
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DockHelper
4
+
5
+ def self.numberize_document(numbers)
6
+ numbers.split('').map(&:to_i)
7
+ end
8
+
9
+ def self.only_digits?(document)
10
+ document.scan(/\D/).empty?
11
+ end
12
+
13
+ end
data/lib/dockcheck/inn.rb CHANGED
@@ -1,12 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "#{__dir__}/dockhelper.rb"
4
+
3
5
  class DockCheck::Inn
4
6
  @@ten_digits_map = [2, 4, 10, 3, 5, 9, 4, 6, 8]
5
7
  @@twelve_digits_first_map = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
6
8
  @@twelve_digits_second_map = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
7
9
 
8
10
  def check(numbers, _)
9
- inn = prepare_inn(numbers)
11
+ inn = DockHelper.numberize_document(numbers)
10
12
  case inn.count
11
13
  when 10
12
14
  ten_digit_inn_valid?(inn)
@@ -22,9 +24,6 @@ class DockCheck::Inn
22
24
  end
23
25
 
24
26
  private
25
- def prepare_inn(numbers)
26
- numbers.split('').map(&:to_i)
27
- end
28
27
 
29
28
  def control_sum_calc(inn, coefficients)
30
29
  inn
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DockCheck::Kpp
4
+
5
+ def check(kpp, _)
6
+ case kpp.length
7
+ when 9
8
+ kpp_valid?(kpp)
9
+ else
10
+ raise StandardError.new 'Incorrect kpp numbers count!'
11
+ end
12
+ end
13
+
14
+ def name
15
+ :kpp
16
+ end
17
+
18
+ private
19
+
20
+ def kpp_valid?(kpp)
21
+ !!(kpp =~ /^[0-9]{4}[0-9A-Z]{2}[0-9]{3}$/)
22
+ end
23
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "#{__dir__}/dockhelper.rb"
4
+
5
+ class DockCheck::Ogrn
6
+
7
+ def check(ogrn, _)
8
+ case ogrn.length
9
+ when 13
10
+ if DockHelper.only_digits?(ogrn)
11
+ ogrn_valid?(ogrn)
12
+ else
13
+ false
14
+ end
15
+ else
16
+ raise StandardError.new 'Incorrect ogrn numbers count!'
17
+ end
18
+ end
19
+
20
+ def name
21
+ :ogrn
22
+ end
23
+
24
+ private
25
+
26
+ def ogrn_valid?(ogrn)
27
+ first_code = ogrn[0..12].to_i
28
+ second_code = (first_code / 11).floor * 11
29
+ result_sum = (first_code - second_code) % 10
30
+ result_sum == ogrn[13].to_i
31
+ end
32
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "#{__dir__}/dockhelper.rb"
4
+
5
+ class DockCheck::Ogrnip
6
+
7
+ def check(ogrnip, _)
8
+ case ogrnip.length
9
+ when 15
10
+ if DockHelper.only_digits?(ogrnip)
11
+ ogrnip_valid?(ogrnip)
12
+ else
13
+ false
14
+ end
15
+ else
16
+ raise StandardError.new 'Incorrect ogrnip numbers count!'
17
+ end
18
+ end
19
+
20
+ def name
21
+ :ogrnip
22
+ end
23
+
24
+ private
25
+
26
+ def ogrnip_valid?(ogrnip)
27
+ first_code = ogrnip[0..13].to_i
28
+ second_code = (first_code / 13).floor * 13
29
+ result_sum = (first_code - second_code) % 10
30
+ result_sum == ogrnip[14].to_i
31
+ end
32
+ end
@@ -1,10 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "#{__dir__}/dockhelper.rb"
4
+
3
5
  class DockCheck::Snils
4
6
  @@coefficients_map = [9, 8, 7, 6, 5, 4, 3, 2, 1]
5
7
 
6
8
  def check(numbers, _)
7
- snils = prepare_snils(numbers)
9
+ snils = DockHelper.numberize_document(numbers)
8
10
  case snils.count
9
11
  when 11
10
12
  last_digits = numbers.slice(9, 10).to_i
@@ -19,9 +21,6 @@ class DockCheck::Snils
19
21
  end
20
22
 
21
23
  private
22
- def prepare_snils(numbers)
23
- numbers.split('').map(&:to_i)
24
- end
25
24
 
26
25
  def control_sum_calc(inn, coefficients)
27
26
  inn
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: 1.2.0
4
+ version: 1.5.2
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-06-18 00:00:00.000000000 Z
11
+ date: 2021-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -32,7 +32,11 @@ extra_rdoc_files: []
32
32
  files:
33
33
  - lib/dockcheck.rb
34
34
  - lib/dockcheck/bik.rb
35
+ - lib/dockcheck/dockhelper.rb
35
36
  - lib/dockcheck/inn.rb
37
+ - lib/dockcheck/kpp.rb
38
+ - lib/dockcheck/ogrn.rb
39
+ - lib/dockcheck/ogrnip.rb
36
40
  - lib/dockcheck/snils.rb
37
41
  homepage: https://rubygems.org/gems/dockcheck
38
42
  licenses: