faker-russian 0.0.2 → 0.0.3

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: 555645ea6b04286daa9446b352fe7f1566a560c3
4
- data.tar.gz: e1c06a0eacb4de35f7257b99cd722c0c81eb7ee8
3
+ metadata.gz: 1bd6b02cf4fb74d25527c82848ab0be7cdb3163d
4
+ data.tar.gz: 15260a247c047573f436ed18b9cc2b9e5d3ccc8b
5
5
  SHA512:
6
- metadata.gz: 931aa64d63425363848cc0600e5315fc6e029991ada16bb681e805272697079b8a2f14f38dc50db089ecf57523632df5269ebe4778102100f7d3af61d2e81e35
7
- data.tar.gz: e5f0ec94da0ff210f8d5cb5098004c69d87321b4a7f98f28ccd60959d2b21c05bd8730c949324bc707f580cc37c8ce3147e5d68db15c5a098ad8b001d3c087cd
6
+ metadata.gz: 2e0bcd450e84d772ffdad90cc91f01cabe1880d37558773e367ec2f08e39be659ca7c578cf21e6f839436c4519ed008314a8923c1a83e877556e8101e4ea8cda
7
+ data.tar.gz: d5fcd5308a1107a679ffc6790379c66b0f719a99aeb598cd4619a469b56986637f58b4b5fbf760b255b7c6e93219bb04ed8504e208bb9c205d424fd783baa6e2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.0.3
2
+
3
+ * Okpo faker added
4
+
1
5
  # 0.0.2
2
6
 
3
7
  * Kpp faker added
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,31 @@
1
+ # Инструкции разработчикам
2
+
3
+ Модуль `Faker::Russian` делает extend других модулей, в которых и находится функционал библиотеки.
4
+
5
+ Например:
6
+
7
+ ``` ruby
8
+ module Faker
9
+ module Russian
10
+ extend SharedConstants
11
+ extend Version
12
+
13
+ extend Inn # функционал ИНН
14
+ # other modules
15
+ end
16
+ end
17
+ ```
18
+
19
+ ``` ruby
20
+ module Faker
21
+ module Russian
22
+ module Inn
23
+ def inn(options = {})
24
+ # code
25
+ ```
26
+
27
+ Константы (номера регионов, классификация госучреждений и т.д.) и методы работы с ними размещать в `Faker::Russian::Constants`
28
+
29
+ Для каждого модуля предусмотреть последовательности(`Faker::Russian::Sequence`), а также возможность подстановки значений констант (напр., см. опцию `region_number` в `#inn`)
30
+
31
+ Также надо предусмотреть вывод ошибки, если в Faker подставляется несуществующий параметр
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Faker::Russian
2
2
 
3
3
  [[english_doc](doc/english_readme.md)]
4
+ [[Инструкции разработчикам](CONTRIBUTING.md)]
4
5
  [![Gem Version](https://badge.fury.io/rb/faker-russian.svg)](http://badge.fury.io/rb/faker-russian)
5
6
  [![Build Status](https://travis-ci.org/asiniy/faker-russian.svg?branch=master)](https://travis-ci.org/asiniy/faker-russian)
6
7
  [![Code Climate](https://codeclimate.com/github/asiniy/faker-russian.png)](https://codeclimate.com/github/asiniy/faker-russian)
@@ -8,7 +9,7 @@
8
9
  Генерация русских значений: ИНН, ОКПО, КПП и т.д.
9
10
 
10
11
  * [ИНН](http://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика) (Faker::Russian.inn)
11
- * (TODO) [ОКПО](http://ru.wikipedia.org/wiki/Общероссийский_классификатор_предприятий_и_организаций) (Faker::Russian.okpo)
12
+ * [ОКПО](http://ru.wikipedia.org/wiki/Общероссийский_классификатор_предприятий_и_организаций) (Faker::Russian.okpo)
12
13
  * [КПП](http://ru.wikipedia.org/wiki/Код_причины_постановки_на_учёт) (Faker::Russian.kpp)
13
14
  * (TODO) [ОГРН](http://ru.wikipedia.org/wiki/Основной_государственный_регистрационный_номер) (Faker::Russian.ogrn)
14
15
  * (TODO) [Корреспондентский счёт] (http://ru.wikipedia.org/wiki/Корреспондентский_счёт) (Faker::Russian.ks)
@@ -50,6 +51,20 @@
50
51
  Faker::Russian.inn(sequence_number: 1) # => '0956860593'
51
52
  ```
52
53
 
54
+ ### ОКПО
55
+
56
+ ``` ruby
57
+ Faker::Russian.okpo # => '57972160'
58
+ ```
59
+
60
+ Также доступны последовательности:
61
+
62
+ ``` ruby
63
+ Faker::Russian.okpo(sequence_number: 1) # => '13410254'
64
+ Faker::Russian.okpo(sequence_number: 1) # => '13410254'
65
+ ```
66
+
67
+
53
68
  ### КПП
54
69
 
55
70
  Генерирует КПП со случайным номером региона
@@ -71,10 +86,6 @@
71
86
  Faker::Russian.inn(sequence_number: 1) # => '381201001'
72
87
  ```
73
88
 
74
- ## Contributing
89
+ ## Инструкции разработчикам
75
90
 
76
- 1. Fork it ( https://github.com/[my-github-username]/faker-russian/fork )
77
- 2. Create your feature branch (`git checkout -b my-new-feature`)
78
- 3. Commit your changes (`git commit -am 'Add some feature'`)
79
- 4. Push to the branch (`git push origin my-new-feature`)
80
- 5. Create a new Pull Request
91
+ Читай [CONTRIBUTING.md](CONTRIBUTING.md)
@@ -1,6 +1,7 @@
1
1
  # Faker::Russian
2
2
 
3
3
  [[по-русски](../README.md)]
4
+ [[developer instructions](../CONTRIBUTING.md)]
4
5
  [![Gem Version](https://badge.fury.io/rb/faker-russian.svg)](http://badge.fury.io/rb/faker-russian)
5
6
  [![Build Status](https://travis-ci.org/asiniy/faker-russian.svg?branch=master)](https://travis-ci.org/asiniy/faker-russian)
6
7
  [![Code Climate](https://codeclimate.com/github/asiniy/faker-russian.png)](https://codeclimate.com/github/asiniy/faker-russian)
@@ -8,7 +9,7 @@
8
9
  Generation of specific russian values
9
10
 
10
11
  * [INN](http://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика) (Faker::Russian.inn) Russian analogue of VAT identification number
11
- * (TODO) [OKPO](http://ru.wikipedia.org/wiki/Общероссийский_классификатор_предприятий_и_организаций) (Faker::Russian.okpo) Legal code
12
+ * [OKPO](http://ru.wikipedia.org/wiki/Общероссийский_классификатор_предприятий_и_организаций) (Faker::Russian.okpo) Legal code
12
13
  * [KPP](http://ru.wikipedia.org/wiki/Код_причины_постановки_на_учёт) (Faker::Russian.kpp) Code of reason for registration
13
14
  * (TODO) [OGRN](http://ru.wikipedia.org/wiki/Основной_государственный_регистрационный_номер) (Faker::Russian.ogrn) Main state registration number
14
15
  * (TODO) [Correspondent Account Value] (http://ru.wikipedia.org/wiki/Корреспондентский_счёт) (Faker::Russian.ks)
@@ -50,6 +51,19 @@ Also you can use sequences
50
51
  Faker::Russian.inn(sequence_number: 1) # => '0956860593'
51
52
  ```
52
53
 
54
+ ### OKPO
55
+
56
+ ``` ruby
57
+ Faker::Russian.okpo # => '57972160'
58
+ ```
59
+
60
+ Also pseudo-random sequences available
61
+
62
+ ``` ruby
63
+ Faker::Russian.okpo(sequence_number: 1) # => '13410254'
64
+ Faker::Russian.okpo(sequence_number: 1) # => '13410254'
65
+ ```
66
+
53
67
  ### KPP
54
68
 
55
69
  Generate KPP with random region_number
@@ -73,8 +87,4 @@ Also, you can use pseudo random sequence numbers (not much 1000, there is limite
73
87
 
74
88
  ## Contributing
75
89
 
76
- 1. Fork it ( https://github.com/[my-github-username]/faker-russian/fork )
77
- 2. Create your feature branch (`git checkout -b my-new-feature`)
78
- 3. Commit your changes (`git commit -am 'Add some feature'`)
79
- 4. Push to the branch (`git push origin my-new-feature`)
80
- 5. Create a new Pull Request
90
+ Please read [CONTRIBUTING.md](../CONTRIBUTING.md) in Russian
@@ -22,5 +22,5 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency 'rake', '~> 10'
23
23
  spec.add_development_dependency 'rspec', '~> 3'
24
24
  spec.add_development_dependency 'faker', '~> 1.3'
25
- spec.add_development_dependency 'validates_russian', '0.0.6'
25
+ spec.add_development_dependency 'validates_russian', '0.0.7'
26
26
  end
@@ -1,7 +1,18 @@
1
1
  module Faker
2
2
  module Russian
3
- module SharedConstants
3
+ module Constants
4
4
  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 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 83 86 87 89}
5
+
6
+ def find_region_number(number = nil, sequence)
7
+ region_numbers = Faker::Russian::Constants::REGION_NUMBERS
8
+
9
+ if number.present?
10
+ raise('there is no region with that number!') unless region_numbers.include?(number.to_s)
11
+ number.to_s
12
+ else
13
+ region_numbers[sequence.rand(region_numbers.size)]
14
+ end
15
+ end
5
16
  end
6
17
  end
7
18
  end
@@ -17,22 +17,6 @@ module Faker
17
17
 
18
18
  private
19
19
 
20
- def find_sequence(number)
21
- sequence = number || Random.rand(1_000_000_000)
22
- Random.new(sequence)
23
- end
24
-
25
- def find_region_number(number = nil, sequence)
26
- region_numbers = Faker::Russian::SharedConstants::REGION_NUMBERS
27
-
28
- if number.present?
29
- raise('there is no region with that number!') unless region_numbers.include?(number.to_s)
30
- number.to_s
31
- else
32
- region_numbers[sequence.rand(region_numbers.size)]
33
- end
34
- end
35
-
36
20
  def find_kind(kind, sequence)
37
21
  case kind
38
22
  when :individual, :legal then kind
@@ -14,22 +14,6 @@ module Faker
14
14
 
15
15
  private
16
16
 
17
- def find_sequence(number)
18
- sequence = number || Random.rand(1_000_000_000)
19
- Random.new(sequence)
20
- end
21
-
22
- def find_region_number(number = nil, sequence)
23
- region_numbers = Faker::Russian::SharedConstants::REGION_NUMBERS
24
-
25
- if number.present?
26
- raise('there is no region with that number!') unless region_numbers.include?(number.to_s)
27
- number.to_s
28
- else
29
- region_numbers[sequence.rand(region_numbers.size)]
30
- end
31
- end
32
-
33
17
  def two_region_numbers(sequence)
34
18
  sprintf '%02d', sequence.rand(100)
35
19
  end
@@ -0,0 +1,30 @@
1
+ module Faker
2
+ module Russian
3
+ module Okpo
4
+ def okpo(options = {})
5
+ if (options.keys - [:sequence_number]).any?
6
+ raise 'wrong options. just :sequence_number'
7
+ end
8
+
9
+ sequence = find_sequence(options[:sequence_number])
10
+ okpo_digits = okpo_region_numbers(sequence)
11
+ okpo_digits + okpo_calc(okpo_digits)
12
+ end
13
+
14
+ private
15
+
16
+ def okpo_region_numbers(sequence)
17
+ if [true, false][sequence.rand(2)]
18
+ sprintf '%07d', sequence.rand(10_000_000)
19
+ else
20
+ sprintf '%09d', sequence.rand(1_000_000_000)
21
+ end
22
+ end
23
+
24
+ def okpo_calc(okpo_digits)
25
+ (okpo_digits.split(//).map(&:to_i).each_with_index.inject(0) { |s, (p, i)| s + p * (i + 1) } % 11 % 10).to_s
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,10 @@
1
+ module Faker
2
+ module Russian
3
+ module Sequence
4
+ def find_sequence(number)
5
+ sequence = number || Random.rand(1_000_000_000)
6
+ Random.new(sequence)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -1,7 +1,7 @@
1
1
  module Faker
2
2
  module Russian
3
3
  module Version
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.3'
5
5
 
6
6
  def version
7
7
  VERSION
data/lib/faker/russian.rb CHANGED
@@ -2,10 +2,12 @@ Dir[File.dirname(__FILE__) + '/russian/**/*.rb'].each{ |f| require f }
2
2
 
3
3
  module Faker
4
4
  module Russian
5
- extend SharedConstants
5
+ extend Constants
6
+ extend Sequence
6
7
  extend Version
7
8
 
8
9
  extend Inn
9
10
  extend Kpp
11
+ extend Okpo
10
12
  end
11
13
  end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Faker::Russian do
4
+ describe '#okpo' do
5
+ before(:all) do
6
+ DummyModel.reset_callbacks(:validate)
7
+ DummyModel.validates(:field, okpo_format: true)
8
+ end
9
+
10
+ it 'generate valid okpo without arguments' do
11
+ 100.times do
12
+ expect(DummyModel.new(field: Faker::Russian.okpo)).to be_valid
13
+ end
14
+ end
15
+
16
+ it 'generate difference okpos with sequence' do
17
+ sequenced_okpos = 10000.times.map{ |n| Faker::Russian.okpo(sequence_number: n) }
18
+ expect(sequenced_okpos.size).to eq(sequenced_okpos.uniq.size)
19
+ end
20
+
21
+ it 'generate same okpos for sequence' do
22
+ array1 = 10000.times.map{ |n| Faker::Russian.okpo(sequence_number: n) }
23
+ array2 = 10000.times.map{ |n| Faker::Russian.okpo(sequence_number: n) }
24
+ expect(array1).to eq(array2)
25
+ end
26
+
27
+ it 'permit just a few options' do
28
+ expect{ Faker::Russian.okpo(shit: 'shit') }.to raise_error
29
+ end
30
+ end
31
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faker-russian
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-03 00:00:00.000000000 Z
11
+ date: 2014-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 0.0.6
75
+ version: 0.0.7
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 0.0.6
82
+ version: 0.0.7
83
83
  description: Faker russian specific values. INN, OKPO, OGRN et.c.
84
84
  email:
85
85
  - kaburbundokel11g@inbox.ru
@@ -90,6 +90,7 @@ files:
90
90
  - ".gitignore"
91
91
  - ".travis.yml"
92
92
  - CHANGELOG.md
93
+ - CONTRIBUTING.md
93
94
  - Gemfile
94
95
  - LICENSE.txt
95
96
  - README.md
@@ -100,9 +101,12 @@ files:
100
101
  - lib/faker/russian/constants.rb
101
102
  - lib/faker/russian/inn.rb
102
103
  - lib/faker/russian/kpp.rb
104
+ - lib/faker/russian/okpo.rb
105
+ - lib/faker/russian/sequence.rb
103
106
  - lib/faker/russian/version.rb
104
107
  - spec/faker/russian/inn_spec.rb
105
108
  - spec/faker/russian/kpp_spec.rb
109
+ - spec/faker/russian/okpo_spec.rb
106
110
  - spec/spec_helper.rb
107
111
  - spec/support/dummy_model.rb
108
112
  homepage: http://github.com/asiniy/faker-russian
@@ -132,5 +136,6 @@ summary: Faker russian specific values. INN, OGRN, et.c.
132
136
  test_files:
133
137
  - spec/faker/russian/inn_spec.rb
134
138
  - spec/faker/russian/kpp_spec.rb
139
+ - spec/faker/russian/okpo_spec.rb
135
140
  - spec/spec_helper.rb
136
141
  - spec/support/dummy_model.rb