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 +4 -4
- data/lib/dockcheck.rb +14 -7
- data/lib/dockcheck/bik.rb +3 -9
- data/lib/dockcheck/dockhelper.rb +13 -0
- data/lib/dockcheck/inn.rb +3 -4
- data/lib/dockcheck/kpp.rb +23 -0
- data/lib/dockcheck/ogrn.rb +32 -0
- data/lib/dockcheck/ogrnip.rb +32 -0
- data/lib/dockcheck/snils.rb +3 -4
- metadata +6 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4db77327141c60927c497dac9420f9f054810d1812cee41565a7a0bb5ce1524a
|
|
4
|
+
data.tar.gz: cb28c66b5914807ae53ed9509068a7d269285ff76c9350d0852b6021e194befc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
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 =
|
|
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
|
data/lib/dockcheck/snils.rb
CHANGED
|
@@ -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 =
|
|
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
|
|
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-
|
|
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:
|