validates_russian 0.0.3 → 0.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 +4 -4
- data/CHANGELOG.md +12 -0
- data/README.md +12 -4
- data/doc/english_readme.md +12 -4
- data/lib/validates_russian/region_numbers.rb +1 -1
- data/lib/validates_russian/version.rb +1 -1
- data/lib/validators/{inn_validator.rb → inn_format_validator.rb} +1 -1
- data/lib/validators/{kpp_validator.rb → kpp_format_validator.rb} +2 -2
- data/lib/validators/okpo_format_validator.rb +16 -0
- data/spec/validators/{inn_validator_spec.rb → inn_format_validator_spec.rb} +2 -2
- data/spec/validators/{kpp_validator_spec.rb → kpp_format_validator_spec.rb} +2 -2
- data/spec/validators/okpo_format_validator_spec.rb +39 -0
- metadata +12 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 544d7bfc5a8515ea8c176c9672c92507b82b93d3
|
4
|
+
data.tar.gz: 943fc064b8196c5680c1b20b255e09638cbb28d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 086bfd6f6337c324679e6c21a6cf44f012ecc3ca39b69cab572bdc616e24bfa61e15a86d9846e9ba472909f724a0805baa389fcf37f6a508945e2b476a74394a
|
7
|
+
data.tar.gz: 99c3142c879719be955df00975661ab7a61d4bf9ecd9cbc6271d5da2ad865773ff4cd3f6c63d89a533d4aaa7555d85f48ca063c6b08823189389e313c39319ec
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -8,10 +8,10 @@
|
|
8
8
|
|
9
9
|
Валидация русских значений:
|
10
10
|
|
11
|
-
* [ИНН](http://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика)
|
12
|
-
* ОКПО (
|
11
|
+
* [ИНН](http://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика) (InnFormatValidator)
|
12
|
+
* [ОКПО](http://ru.wikipedia.org/wiki/Общероссийский_классификатор_предприятий_и_организаций) (OkpoFormatValidator)
|
13
13
|
* ОКАТО (TODO)
|
14
|
-
* [КПП](http://ru.wikipedia.org/wiki/Код_причины_постановки_на_учёт)
|
14
|
+
* [КПП](http://ru.wikipedia.org/wiki/Код_причины_постановки_на_учёт) (KppFormatValidator)
|
15
15
|
* ОГРН (TODO)
|
16
16
|
* Корреспондентский счёт (TODO)
|
17
17
|
* Рассчётный счёт (TODO)
|
@@ -24,9 +24,17 @@
|
|
24
24
|
|
25
25
|
## Использование
|
26
26
|
|
27
|
+
Используй валидаторы в своей модели
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
validates :attribute, <validator_underscore>: true
|
31
|
+
```
|
32
|
+
|
33
|
+
где `<validator_underscore>` это название валидатора
|
34
|
+
|
27
35
|
```ruby
|
28
36
|
class Legal < ActiveRecord::Base
|
29
|
-
validates :kpp,
|
37
|
+
validates :kpp, kpp_format: true
|
30
38
|
end
|
31
39
|
|
32
40
|
# legal = Legal.new
|
data/doc/english_readme.md
CHANGED
@@ -7,10 +7,10 @@
|
|
7
7
|
|
8
8
|
Russian specific values validation:
|
9
9
|
|
10
|
-
* [INN](http://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика) (Russian analogue of VAT identification number
|
11
|
-
* OKPO (
|
10
|
+
* [INN](http://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика) (InnFormatValidator) Russian analogue of VAT identification number
|
11
|
+
* [OKPO](http://ru.wikipedia.org/wiki/Общероссийский_классификатор_предприятий_и_организаций) (OkpoFormatValidator) Legal code
|
12
12
|
* OKATO (TODO)
|
13
|
-
* [KPP](http://ru.wikipedia.org/wiki/Код_причины_постановки_на_учёт) (Code of reason for registration
|
13
|
+
* [KPP](http://ru.wikipedia.org/wiki/Код_причины_постановки_на_учёт) (KppFormatValidator) Code of reason for registration
|
14
14
|
* OGRN (TODO)
|
15
15
|
* Correspondent Account Value (TODO)
|
16
16
|
* Bank Account Value (TODO)
|
@@ -23,9 +23,17 @@ Add to Gemfile
|
|
23
23
|
|
24
24
|
## Usage
|
25
25
|
|
26
|
+
For most of the validators you just want to add this line to your model:
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
validates :attribute, <validator_underscore>: true
|
30
|
+
```
|
31
|
+
|
32
|
+
where `<validator_underscore>` is an underscored, lowercase form from the validator's name (see the example section below).
|
33
|
+
|
26
34
|
```ruby
|
27
35
|
class Legal < ActiveRecord::Base
|
28
|
-
validates :kpp,
|
36
|
+
validates :kpp, kpp_format: true
|
29
37
|
end
|
30
38
|
|
31
39
|
# legal = Legal.new
|
@@ -1,3 +1,3 @@
|
|
1
1
|
module ValidatesRussian
|
2
|
-
REGION_NUMBERS = %w{01 03 04 05 07 08 10 11
|
2
|
+
REGION_NUMBERS = %w{01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 75 41 23 24 59 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 78 79 83 86 87 89}
|
3
3
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
class KppFormatValidator < ValidatesRussian::Validator
|
2
|
+
# see format here: http://vipiskaegrul.ru/slovar-terminov/kod-prichiny-postanovki-kpp.html
|
3
3
|
validates_using do |kpp|
|
4
4
|
next false unless kpp.size == 9
|
5
5
|
next false unless ValidatesRussian::REGION_NUMBERS.include?(kpp[0..1])
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class OkpoFormatValidator < ValidatesRussian::Validator
|
2
|
+
validates_using do |okpo|
|
3
|
+
next false unless okpo =~ /^\d+$/
|
4
|
+
|
5
|
+
okpo = okpo.split(//).map(&:to_i)
|
6
|
+
|
7
|
+
next false unless okpo.size == 8 || okpo.size == 10
|
8
|
+
next false unless calc(okpo) == okpo.last
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def self.calc(okpo)
|
14
|
+
okpo[0..-2].each_with_index.inject(0){ |s, p| s + p[0] * (p[1] + 1) } % 11
|
15
|
+
end
|
16
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe InnFormatValidator do
|
4
4
|
before(:each) do
|
5
5
|
TestModel.reset_callbacks(:validate)
|
6
|
-
TestModel.validates(:field,
|
6
|
+
TestModel.validates(:field, inn_format: true)
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'should be valid for valid values' do
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe KppFormatValidator do
|
4
4
|
before(:each) do
|
5
5
|
TestModel.reset_callbacks(:validate)
|
6
|
-
TestModel.validates(:field,
|
6
|
+
TestModel.validates(:field, kpp_format: true)
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'should be valid for valid values' do
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OkpoFormatValidator do
|
4
|
+
before(:each) do
|
5
|
+
TestModel.reset_callbacks(:validate)
|
6
|
+
TestModel.validates(:field, okpo_format: true)
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should be valid for valid values' do
|
10
|
+
valid_okpos = %w{
|
11
|
+
57972160
|
12
|
+
13410254
|
13
|
+
0060621966
|
14
|
+
02372510
|
15
|
+
}
|
16
|
+
|
17
|
+
valid_okpos.each do |okpo|
|
18
|
+
model = TestModel.new
|
19
|
+
model.field = okpo
|
20
|
+
puts okpo
|
21
|
+
model.should be_valid
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# it 'should not be valid for invalid values' do
|
26
|
+
# invalid_okpos = %w{
|
27
|
+
# 57972163
|
28
|
+
# 579721634
|
29
|
+
# secret
|
30
|
+
# 78fffffff
|
31
|
+
# }.push('', ' ', nil, [], {})
|
32
|
+
|
33
|
+
# invalid_okpos.each do |okpo|
|
34
|
+
# model = TestModel.new
|
35
|
+
# model.field = okpo
|
36
|
+
# model.should_not be_valid
|
37
|
+
# end
|
38
|
+
# end
|
39
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_russian
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Antonov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -75,6 +75,7 @@ extra_rdoc_files: []
|
|
75
75
|
files:
|
76
76
|
- .gitignore
|
77
77
|
- .travis.yml
|
78
|
+
- CHANGELOG.md
|
78
79
|
- Gemfile
|
79
80
|
- LICENSE.txt
|
80
81
|
- README.md
|
@@ -86,12 +87,14 @@ files:
|
|
86
87
|
- lib/validates_russian/region_numbers.rb
|
87
88
|
- lib/validates_russian/validator.rb
|
88
89
|
- lib/validates_russian/version.rb
|
89
|
-
- lib/validators/
|
90
|
-
- lib/validators/
|
90
|
+
- lib/validators/inn_format_validator.rb
|
91
|
+
- lib/validators/kpp_format_validator.rb
|
92
|
+
- lib/validators/okpo_format_validator.rb
|
91
93
|
- spec/spec_helper.rb
|
92
94
|
- spec/support/test_model.rb
|
93
|
-
- spec/validators/
|
94
|
-
- spec/validators/
|
95
|
+
- spec/validators/inn_format_validator_spec.rb
|
96
|
+
- spec/validators/kpp_format_validator_spec.rb
|
97
|
+
- spec/validators/okpo_format_validator_spec.rb
|
95
98
|
- validates_russian.gemspec
|
96
99
|
homepage: http://github.com/asiniy/validates_russian
|
97
100
|
licenses:
|
@@ -120,5 +123,6 @@ summary: validates specific russian values
|
|
120
123
|
test_files:
|
121
124
|
- spec/spec_helper.rb
|
122
125
|
- spec/support/test_model.rb
|
123
|
-
- spec/validators/
|
124
|
-
- spec/validators/
|
126
|
+
- spec/validators/inn_format_validator_spec.rb
|
127
|
+
- spec/validators/kpp_format_validator_spec.rb
|
128
|
+
- spec/validators/okpo_format_validator_spec.rb
|