validates_russian 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +12 -0
- data/README.md +18 -3
- data/doc/english_readme.md +16 -2
- data/gemfiles/Gemfile.activemodel-3.0 +5 -0
- data/gemfiles/Gemfile.activemodel-4.0 +5 -0
- data/lib/validates_russian.rb +5 -2
- data/lib/validates_russian/region_numbers.rb +3 -0
- data/lib/validates_russian/validator.rb +11 -0
- data/lib/validates_russian/version.rb +1 -1
- data/lib/validators/kpp_validator.rb +9 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/support/test_model.rb +5 -0
- data/spec/validators/kpp_validator_spec.rb +38 -0
- data/validates_russian.gemspec +4 -1
- metadata +62 -18
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1860cf574419dcd8f498496d2e585088d8c1273b
|
4
|
+
data.tar.gz: 319956b9e6499c6c1bd9af910b410ff3fc2303c4
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3018567ac467d977e7a5bb562bc67ff7e56c113c9eb7e6a865a7fbd883147757d9d48bc6118ebebd4f24e8e275fc5a8aa6376ea39d2e605f58b0c7f3bd375a03
|
7
|
+
data.tar.gz: 0bfa685c2f6353248ea295867824a904ac2315cd781f64a76834f838f3f9ab051cb1bb06a791af285ee3e0d3ed14aac1049303c1df67bf2661bc3ba05d98398e
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,14 +1,19 @@
|
|
1
1
|
# validates_russian
|
2
2
|
|
3
3
|
[[english_doc](doc/english_readme.md)]
|
4
|
+
[[инструкции разработчикам](https://github.com/asiniy/validates_russian/wiki/Инструкции-разработчикам)]
|
5
|
+
[![Gem Version](https://badge.fury.io/rb/validates_russian.png)](http://badge.fury.io/rb/validates_russian)
|
6
|
+
[![Build Status](https://travis-ci.org/asiniy/validates_russian.png?branch=master)](https://travis-ci.org/asiniy/validates_russian)
|
4
7
|
|
5
8
|
Валидация русских значений:
|
6
9
|
|
7
10
|
* ИНН (TODO)
|
8
11
|
* ОКПО (TODO)
|
9
12
|
* ОКАТО (TODO)
|
10
|
-
* КПП
|
13
|
+
* [КПП](http://ru.wikipedia.org/wiki/Код_причины_постановки_на_учёт)
|
11
14
|
* ОГРН (TODO)
|
15
|
+
* Корреспондентский счёт (TODO)
|
16
|
+
* Рассчётный счёт (TODO)
|
12
17
|
|
13
18
|
## Установка
|
14
19
|
|
@@ -16,9 +21,19 @@
|
|
16
21
|
|
17
22
|
gem 'validates_russian'
|
18
23
|
|
19
|
-
##
|
24
|
+
## Использование
|
20
25
|
|
21
|
-
|
26
|
+
```ruby
|
27
|
+
class Legal < ActiveRecord::Base
|
28
|
+
validates :kpp, kpp: true
|
29
|
+
end
|
30
|
+
|
31
|
+
# legal = Legal.new
|
32
|
+
# legal.kpp = '001122333'
|
33
|
+
# legal.valid? # => false
|
34
|
+
# legal.kpp = '525601001'
|
35
|
+
# legal.valid? # => true
|
36
|
+
```
|
22
37
|
|
23
38
|
## Contributing
|
24
39
|
|
data/doc/english_readme.md
CHANGED
@@ -1,14 +1,18 @@
|
|
1
1
|
# validates_russian
|
2
2
|
|
3
3
|
[[по-русски](README.md)]
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/validates_russian.png)](http://badge.fury.io/rb/validates_russian)
|
5
|
+
[![Build Status](https://travis-ci.org/asiniy/validates_russian.png?branch=master)](https://travis-ci.org/asiniy/validates_russian)
|
4
6
|
|
5
7
|
Russian specific values validation:
|
6
8
|
|
7
9
|
* INN (TODO)
|
8
10
|
* OKPO (TODO)
|
9
11
|
* OKATO (TODO)
|
10
|
-
* KPP (
|
12
|
+
* [KPP](http://ru.wikipedia.org/wiki/Код_причины_постановки_на_учёт) (Code of reason for registration)
|
11
13
|
* OGRN (TODO)
|
14
|
+
* Correspondent Account Value (TODO)
|
15
|
+
* Bank Account Value (TODO)
|
12
16
|
|
13
17
|
## Installation
|
14
18
|
|
@@ -18,7 +22,17 @@ Add to Gemfile
|
|
18
22
|
|
19
23
|
## Usage
|
20
24
|
|
21
|
-
|
25
|
+
```ruby
|
26
|
+
class Legal < ActiveRecord::Base
|
27
|
+
validates :kpp, kpp: true
|
28
|
+
end
|
29
|
+
|
30
|
+
# legal = Legal.new
|
31
|
+
# legal.kpp = '001122333'
|
32
|
+
# legal.valid? # => false
|
33
|
+
# legal.kpp = '525601001'
|
34
|
+
# legal.valid? # => true
|
35
|
+
```
|
22
36
|
|
23
37
|
## Contributing
|
24
38
|
|
data/lib/validates_russian.rb
CHANGED
@@ -0,0 +1,3 @@
|
|
1
|
+
module ValidatesRussian
|
2
|
+
REGION_NUMBERS = %w{01 03 04 05 07 08 10 11 11 12 14 15 17 18 19 20 22 24 25 26 27 28 29 30 32 33 34 36 37 38 40 41 42 44 45 46 47 49 50 52 53 56 57 57 58 60 61 63 64 65 66 68 69 70 71 71 71 73 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99}
|
3
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module ValidatesRussian
|
2
|
+
class Validator < ActiveModel::EachValidator
|
3
|
+
def self.validates_using(&block)
|
4
|
+
define_method :validate_each do |record, attribute, value|
|
5
|
+
if block[value.to_s] == false
|
6
|
+
record.errors.add(attribute, attribute.to_sym, options.merge(value: value))
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# http://vipiskaegrul.ru/slovar-terminov/kod-prichiny-postanovki-kpp.html
|
2
|
+
class KppValidator < ValidatesRussian::Validator
|
3
|
+
validates_using do |kpp|
|
4
|
+
next false unless kpp.size == 9
|
5
|
+
next false unless ValidatesRussian::REGION_NUMBERS.include?(kpp[0..1])
|
6
|
+
next false unless kpp =~ /^\d+$/
|
7
|
+
next false unless kpp[5..6] != '00'
|
8
|
+
end
|
9
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe KppValidator do
|
4
|
+
before(:each) do
|
5
|
+
TestModel.reset_callbacks(:validate)
|
6
|
+
TestModel.validates(:field, kpp: true)
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should be valid for valid values' do
|
10
|
+
valid_kpps = %w{
|
11
|
+
771501001
|
12
|
+
772501001
|
13
|
+
525601001
|
14
|
+
}
|
15
|
+
|
16
|
+
valid_kpps.each do |kpp|
|
17
|
+
model = TestModel.new
|
18
|
+
model.field = kpp
|
19
|
+
model.should be_valid
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should not be valid for invalid values' do
|
24
|
+
valid_kpps = %w{
|
25
|
+
77150100
|
26
|
+
oss!
|
27
|
+
secret
|
28
|
+
001122333
|
29
|
+
78fffffff
|
30
|
+
}.push('', ' ', nil, [], {})
|
31
|
+
|
32
|
+
valid_kpps.each do |kpp|
|
33
|
+
model = TestModel.new
|
34
|
+
model.field = kpp
|
35
|
+
model.should_not be_valid
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/validates_russian.gemspec
CHANGED
@@ -8,9 +8,9 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = ValidatesRussian::VERSION
|
9
9
|
spec.authors = ['Alex Antonov']
|
10
10
|
spec.email = ['kaburbundokel11g@inbox.ru']
|
11
|
+
spec.homepage = 'http://github.com/asiniy/validates_russian'
|
11
12
|
spec.description = %q{validates specific russian values}
|
12
13
|
spec.summary = %q{validates specific russian values}
|
13
|
-
spec.homepage = ''
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
@@ -18,6 +18,9 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
+
spec.add_dependency 'activemodel', '>=3.0.0'
|
22
|
+
|
21
23
|
spec.add_development_dependency 'bundler', '~>1.3'
|
22
24
|
spec.add_development_dependency 'rake'
|
25
|
+
spec.add_development_dependency 'rspec'
|
23
26
|
end
|
metadata
CHANGED
@@ -1,38 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_russian
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Alex Antonov
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-18 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activemodel
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.0.0
|
14
27
|
- !ruby/object:Gem::Dependency
|
15
28
|
name: bundler
|
16
|
-
requirement:
|
17
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
18
30
|
requirements:
|
19
31
|
- - ~>
|
20
32
|
- !ruby/object:Gem::Version
|
21
33
|
version: '1.3'
|
22
34
|
type: :development
|
23
35
|
prerelease: false
|
24
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
25
41
|
- !ruby/object:Gem::Dependency
|
26
42
|
name: rake
|
27
|
-
requirement:
|
28
|
-
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
51
|
requirements:
|
30
|
-
- -
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
31
60
|
- !ruby/object:Gem::Version
|
32
61
|
version: '0'
|
33
62
|
type: :development
|
34
63
|
prerelease: false
|
35
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
36
69
|
description: validates specific russian values
|
37
70
|
email:
|
38
71
|
- kaburbundokel11g@inbox.ru
|
@@ -41,37 +74,48 @@ extensions: []
|
|
41
74
|
extra_rdoc_files: []
|
42
75
|
files:
|
43
76
|
- .gitignore
|
77
|
+
- .travis.yml
|
44
78
|
- Gemfile
|
45
79
|
- LICENSE.txt
|
46
80
|
- README.md
|
47
81
|
- Rakefile
|
48
82
|
- doc/english_readme.md
|
83
|
+
- gemfiles/Gemfile.activemodel-3.0
|
84
|
+
- gemfiles/Gemfile.activemodel-4.0
|
49
85
|
- lib/validates_russian.rb
|
86
|
+
- lib/validates_russian/region_numbers.rb
|
87
|
+
- lib/validates_russian/validator.rb
|
50
88
|
- lib/validates_russian/version.rb
|
89
|
+
- lib/validators/kpp_validator.rb
|
90
|
+
- spec/spec_helper.rb
|
91
|
+
- spec/support/test_model.rb
|
92
|
+
- spec/validators/kpp_validator_spec.rb
|
51
93
|
- validates_russian.gemspec
|
52
|
-
homepage:
|
94
|
+
homepage: http://github.com/asiniy/validates_russian
|
53
95
|
licenses:
|
54
96
|
- MIT
|
97
|
+
metadata: {}
|
55
98
|
post_install_message:
|
56
99
|
rdoc_options: []
|
57
100
|
require_paths:
|
58
101
|
- lib
|
59
102
|
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
-
none: false
|
61
103
|
requirements:
|
62
|
-
- -
|
104
|
+
- - '>='
|
63
105
|
- !ruby/object:Gem::Version
|
64
106
|
version: '0'
|
65
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
108
|
requirements:
|
68
|
-
- -
|
109
|
+
- - '>='
|
69
110
|
- !ruby/object:Gem::Version
|
70
111
|
version: '0'
|
71
112
|
requirements: []
|
72
113
|
rubyforge_project:
|
73
|
-
rubygems_version: 1.
|
114
|
+
rubygems_version: 2.1.11
|
74
115
|
signing_key:
|
75
|
-
specification_version:
|
116
|
+
specification_version: 4
|
76
117
|
summary: validates specific russian values
|
77
|
-
test_files:
|
118
|
+
test_files:
|
119
|
+
- spec/spec_helper.rb
|
120
|
+
- spec/support/test_model.rb
|
121
|
+
- spec/validators/kpp_validator_spec.rb
|