be9-ryba 0.0.1 → 0.0.2

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.
data/README.textile CHANGED
@@ -20,6 +20,7 @@ Ryba — попытка создать аналогичный генератор
20
20
 
21
21
  Библиотека находится в активной разработке. На данный момент реализованы:
22
22
  * Генерация имен.
23
+ * Генерация телефонов.
23
24
 
24
25
  Ниже описан интерфейс для реализованных возможностей.
25
26
 
@@ -54,6 +55,23 @@ h2. Генерация имен
54
55
  end
55
56
  </pre></code>
56
57
 
58
+ h2. Генерация телефонов
59
+
60
+ Метод @Ryba::PhoneNumber.phone_number@.
61
+
62
+ <pre><code>
63
+ >> Ryba::PhoneNumber.phone_number
64
+ => "2-26-47"
65
+ >> Ryba::PhoneNumber.phone_number
66
+ => "431-15-94"
67
+ >> Ryba::PhoneNumber.phone_number
68
+ => "8 (87829) 9-45-53"
69
+ >> Ryba::PhoneNumber.phone_number
70
+ => "5515328"
71
+ >> Ryba::PhoneNumber.phone_number
72
+ => "(2397) 94 78 14"
73
+ </code></pre>
74
+
57
75
  h2. Лицензия
58
76
 
59
77
  Библиотека ryba распространяется по лицензии MIT, см. файл MIT-LICENSE.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 1
2
+ :patch: 2
3
3
  :major: 0
4
4
  :minor: 0
data/lib/ryba/data.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  module Ryba
2
2
  module Data
3
+ # http://taina.aib.ru/names/man/man-a.htm
3
4
  MaleNames = %w{
4
5
  Абрам Авраам Ибрагим Аввакум Аввакуум Аббакум Август Августин
5
6
  Авдей Авенир Аверьян Аверкий Авксентий Агап Агафон Агей Азарий
@@ -52,6 +53,7 @@ module Ryba
52
53
  Эрик Эрнест Юлиан Юлий Юрий Юхим Яков Ян Януарий Яромир
53
54
  Ярослав}.freeze
54
55
 
56
+ # http://taina.aib.ru/names/woman/woman-a.htm
55
57
  FemaleNames = %w{
56
58
  Августа Августина Аврора Агата Агафья Аглая Аглаида Агнесса
57
59
  Агния Агриппина Ада Аделаида Аделина Адриана Аза Акулина
@@ -95,6 +97,7 @@ module Ryba
95
97
  Эрнестина Эстер Эстера Юдита Юлия Юнона Ядвига Яна Янина
96
98
  Ярослава}
97
99
 
100
+ # http://taina.aib.ru/otchectv/man/index.htm
98
101
  MaleMiddleNames = %w{
99
102
  Александрович Алексеевич Альбертович Анатольевич Андреевич
100
103
  Антонович Аркадьевич Артемович Богданович Богуславович Борисович
@@ -110,6 +113,7 @@ module Ryba
110
113
  Тарасович Тимофеевич Тимурович Федорович Феликсович Филиппович
111
114
  Эдуардович Эльдарович Юрьевич Яковлевич Ярославович}
112
115
 
116
+ # http://taina.aib.ru/otchectv/woman/index.htm
113
117
  FemaleMiddleNames = %w{
114
118
  Александровна Алексеевна Альбертовна Анатольевна Андреевна
115
119
  Антоновна Аркадьевна Артемовна Артуровна Архиповна Аскольдовна
@@ -127,6 +131,7 @@ module Ryba
127
131
  Тимуровна Федоровна Феликсовна Филипповна Эдуардовна Эльдаровна
128
132
  Юльевна Юрьевна Яковлевна}
129
133
 
134
+ # http://b23.ru/qiu
130
135
  FamilyNames = %w{
131
136
  Абакумов Абарников Абдулов Абрамов Авдеев Аверин Аверьянов
132
137
  Авилов Автухов Агапов Агафонов Агейкин Ажищенков Азаров Аксаков
data/lib/ryba/name.rb CHANGED
@@ -8,17 +8,17 @@ module Ryba
8
8
  end
9
9
 
10
10
  def first_name(male = nil)
11
- pick(male, Ryba::Data::MaleNames, Ryba::Data::FemaleNames)
11
+ pick_with_gender(male, Ryba::Data::MaleNames, Ryba::Data::FemaleNames)
12
12
  end
13
13
 
14
14
  def middle_name(male = nil)
15
- pick(male, Ryba::Data::MaleMiddleNames, Ryba::Data::FemaleMiddleNames)
15
+ pick_with_gender(male, Ryba::Data::MaleMiddleNames, Ryba::Data::FemaleMiddleNames)
16
16
  end
17
17
 
18
18
  def family_name(male = nil)
19
19
  male = gender if male.nil?
20
20
 
21
- famname = pick_element(Ryba::Data::FamilyNames)
21
+ famname = Ryba.pick(Ryba::Data::FamilyNames)
22
22
 
23
23
  if famname.is_a? Array
24
24
  famname[0] + famname[male ? 1 : 2]
@@ -29,13 +29,9 @@ module Ryba
29
29
 
30
30
  private
31
31
 
32
- def pick(male, male_ary, female_ary)
32
+ def pick_with_gender(male, male_ary, female_ary)
33
33
  male = gender if male.nil?
34
- pick_element(male ? male_ary : female_ary)
35
- end
36
-
37
- def pick_element(ary)
38
- ary[rand(ary.size)]
34
+ Ryba.pick(male ? male_ary : female_ary)
39
35
  end
40
36
  end
41
37
  end
@@ -0,0 +1,38 @@
1
+ module Ryba
2
+ class PhoneNumber
3
+ Formats = [
4
+ # локальные номера
5
+ '?##-##-##',
6
+ '?######',
7
+ '?#-##-##',
8
+ '?-##-##',
9
+
10
+ # номера с кодом города
11
+ '(###) ?##-##-##',
12
+ '(###) ?## ## ##',
13
+ '8 (###) ?##-##-##',
14
+ '+7 (###) ?##-##-##',
15
+ '(####) ?#-##-##',
16
+ '(####) ?# ## ##',
17
+ '8 (####) ?#-##-##',
18
+ '+7 (####) ?#-##-##',
19
+ '(#####) ?-##-##',
20
+ '(#####) ? ## ##',
21
+ '8 (#####) ?-##-##',
22
+ '+7 (#####) ?-##-##',
23
+
24
+ # мобильники
25
+ '8-9##-###-####',
26
+ '8-9##-###-##-##',
27
+ '+7 9## ### ####',
28
+ '+7 9## ### ####',
29
+ ].freeze
30
+
31
+ def self.phone_number
32
+ fmt = Ryba.pick(Formats)
33
+
34
+ # локальные номера не могут начинаться на 8 или 0
35
+ Ryba.numerify(fmt.gsub('?') { Ryba.pick("12345679") })
36
+ end
37
+ end
38
+ end
data/lib/ryba.rb CHANGED
@@ -1,2 +1,18 @@
1
+ module Ryba
2
+ def self.numerify(number_string)
3
+ number_string.gsub('#') { rand(10).to_s }
4
+ end
5
+
6
+ def self.pick(variants)
7
+ case variants
8
+ when Array
9
+ variants[rand(variants.size)]
10
+ when String
11
+ variants[rand(variants.length),1]
12
+ end
13
+ end
14
+ end
15
+
1
16
  require File.join(File.dirname(__FILE__), 'ryba', 'data')
2
17
  require File.join(File.dirname(__FILE__), 'ryba', 'name')
18
+ require File.join(File.dirname(__FILE__), 'ryba', 'phone_number')
data/spec/ryba_spec.rb CHANGED
@@ -26,4 +26,16 @@ describe "Ryba" do
26
26
  end
27
27
  end
28
28
  end
29
+
30
+ describe "PhoneNumber" do
31
+ before :all do
32
+ @pn = Ryba::PhoneNumber
33
+ end
34
+
35
+ it "should work" do
36
+ 20.times do
37
+ @pn.phone_number.should match(/\d/)
38
+ end
39
+ end
40
+ end
29
41
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: be9-ryba
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - oleg dashevskii
@@ -27,6 +27,7 @@ files:
27
27
  - lib/ryba
28
28
  - lib/ryba/data.rb
29
29
  - lib/ryba/name.rb
30
+ - lib/ryba/phone_number.rb
30
31
  - lib/ryba.rb
31
32
  - spec/spec_helper.rb
32
33
  - spec/ryba_spec.rb