validates_russian 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ab2b00dcc3e4d96d2aa480758a7b855f78b2bf4d
4
- data.tar.gz: 94936f7e5ee9d384638e7fa1816df07302346cf1
3
+ metadata.gz: 544d7bfc5a8515ea8c176c9672c92507b82b93d3
4
+ data.tar.gz: 943fc064b8196c5680c1b20b255e09638cbb28d3
5
5
  SHA512:
6
- metadata.gz: 81e4d3fd1e5ab4c44fd1a1d3bf31eb9bd591fc265b1c5902a50f37a1518f2b63a2f76321bd7b836e46f681dea27cdb6a220fe65e50f00d7a34a5ff4fc49bd941
7
- data.tar.gz: 8cf34eff30779459c739445e6dddc1fe9ef8e7835bd8dcf864f688f50047bc812410c1ebefb90ca7e831f8ee81d3aa848bf26fff02f98c5c21ce86e53ccbd9e2
6
+ metadata.gz: 086bfd6f6337c324679e6c21a6cf44f012ecc3ca39b69cab572bdc616e24bfa61e15a86d9846e9ba472909f724a0805baa389fcf37f6a508945e2b476a74394a
7
+ data.tar.gz: 99c3142c879719be955df00975661ab7a61d4bf9ecd9cbc6271d5da2ad865773ff4cd3f6c63d89a533d4aaa7555d85f48ca063c6b08823189389e313c39319ec
data/CHANGELOG.md ADDED
@@ -0,0 +1,12 @@
1
+ ### 0.0.4
2
+
3
+ * Added OkpoFormatValidator
4
+ * InnValidator and KppValidator were renamed to InnFormat and KppFormat validators
5
+
6
+ ### 0.0.3
7
+
8
+ * InnValidator added
9
+
10
+ ### 0.0.2
11
+
12
+ * KppValidator added
data/README.md CHANGED
@@ -8,10 +8,10 @@
8
8
 
9
9
  Валидация русских значений:
10
10
 
11
- * [ИНН](http://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика)
12
- * ОКПО (TODO)
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, kpp: true
37
+ validates :kpp, kpp_format: true
30
38
  end
31
39
 
32
40
  # legal = Legal.new
@@ -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 (TODO)
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, kpp: true
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 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}
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,3 +1,3 @@
1
1
  module ValidatesRussian
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -1,4 +1,4 @@
1
- class InnValidator < ValidatesRussian::Validator
1
+ class InnFormatValidator < ValidatesRussian::Validator
2
2
  validates_using do |inn|
3
3
  next false unless ValidatesRussian::REGION_NUMBERS.include?(inn[0..1])
4
4
  next false unless inn =~ /^\d+$/
@@ -1,5 +1,5 @@
1
- # http://vipiskaegrul.ru/slovar-terminov/kod-prichiny-postanovki-kpp.html
2
- class KppValidator < ValidatesRussian::Validator
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 InnValidator do
3
+ describe InnFormatValidator do
4
4
  before(:each) do
5
5
  TestModel.reset_callbacks(:validate)
6
- TestModel.validates(:field, inn: true)
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 KppValidator do
3
+ describe KppFormatValidator do
4
4
  before(:each) do
5
5
  TestModel.reset_callbacks(:validate)
6
- TestModel.validates(:field, kpp: true)
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.3
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-19 00:00:00.000000000 Z
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/inn_validator.rb
90
- - lib/validators/kpp_validator.rb
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/inn_validator_spec.rb
94
- - spec/validators/kpp_validator_spec.rb
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/inn_validator_spec.rb
124
- - spec/validators/kpp_validator_spec.rb
126
+ - spec/validators/inn_format_validator_spec.rb
127
+ - spec/validators/kpp_format_validator_spec.rb
128
+ - spec/validators/okpo_format_validator_spec.rb