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 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