ryba 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +20 -2
- data/VERSION.yml +1 -1
- data/lib/ryba.rb +9 -4
- data/lib/ryba/company.rb +43 -0
- data/lib/ryba/data.rb +51 -1
- data/ryba.gemspec +2 -1
- data/spec/ryba_spec.rb +16 -0
- metadata +4 -3
data/README.textile
CHANGED
@@ -19,13 +19,14 @@ h2. Введение
|
|
19
19
|
Ryba — попытка создать аналогичный генератор для русского языка: русские имена, адреса и т.д.
|
20
20
|
|
21
21
|
Библиотека находится в активной разработке. На данный момент реализованы:
|
22
|
-
* Генерация
|
22
|
+
* Генерация имен людей.
|
23
23
|
* Генерация телефонов.
|
24
24
|
* Генерация адресов.
|
25
|
+
* Генерация имен компаний.
|
25
26
|
|
26
27
|
Ниже описан интерфейс для реализованных возможностей.
|
27
28
|
|
28
|
-
h2. Генерация имен
|
29
|
+
h2. Генерация имен людей
|
29
30
|
|
30
31
|
Методы из @Ryba::Name@.
|
31
32
|
|
@@ -110,6 +111,23 @@ h2. Генерация адресов
|
|
110
111
|
Обратите внимание, что индекс не является настоящим и что в городе может не быть
|
111
112
|
такой улицы (а на улице — такого дома, а в доме — такой квартиры).
|
112
113
|
|
114
|
+
h2. Генерация имен компаний
|
115
|
+
|
116
|
+
@Ryba::Company.name@ - случайное имя компании. _Примеры:_
|
117
|
+
* ПродуктАэро
|
118
|
+
* ТрастСеть
|
119
|
+
* СалоКондитер
|
120
|
+
* РезервФабрика
|
121
|
+
* ДжинсКредит
|
122
|
+
|
123
|
+
Опция :solidity позволяет управлять длиной имени. Например, @Ryba::Company.name(:solidity => 3)@
|
124
|
+
генерирует более солидное имя для компании:
|
125
|
+
* ТехВоенКомбинатАкадем Групп
|
126
|
+
* ТеплоМаркетТоргСинтез
|
127
|
+
* ПрофСайтВалютСвязь
|
128
|
+
* ТрейдингКоммерцКомТелеком
|
129
|
+
* ГосСервисСпецСтанция
|
130
|
+
|
113
131
|
h2. Лицензия
|
114
132
|
|
115
133
|
Библиотека ryba распространяется по лицензии MIT, см. файл MIT-LICENSE.
|
data/VERSION.yml
CHANGED
data/lib/ryba.rb
CHANGED
@@ -18,6 +18,10 @@ module Ryba
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
def self.pick_multi(variants, count)
|
22
|
+
variants.shuffle.take(count)
|
23
|
+
end
|
24
|
+
|
21
25
|
def self.weighted_pick(variants)
|
22
26
|
total_sum = variants.inject(0) { |sum, var| sum + var[1] }
|
23
27
|
rnd = rand(total_sum)
|
@@ -33,7 +37,8 @@ module Ryba
|
|
33
37
|
end
|
34
38
|
end
|
35
39
|
|
36
|
-
require
|
37
|
-
require
|
38
|
-
require
|
39
|
-
require
|
40
|
+
require 'ryba/data'
|
41
|
+
require 'ryba/name'
|
42
|
+
require 'ryba/phone_number'
|
43
|
+
require 'ryba/address'
|
44
|
+
require 'ryba/company'
|
data/lib/ryba/company.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
module Ryba
|
2
|
+
class Company
|
3
|
+
class <<self
|
4
|
+
def name(opts = {})
|
5
|
+
ind = opts[:industries] || opts[:industry] || 3
|
6
|
+
industries = case ind
|
7
|
+
when Numeric
|
8
|
+
Ryba.pick_multi(Data::Industries, ind)
|
9
|
+
when Array
|
10
|
+
ind
|
11
|
+
when Symbol
|
12
|
+
[ ind ]
|
13
|
+
else
|
14
|
+
raise ArgumentError
|
15
|
+
end
|
16
|
+
|
17
|
+
words = (industries << :common).map { |i| Data::CompanyNameParts[i] }.flatten
|
18
|
+
|
19
|
+
last_word_variants = words.select { |w| !w.start_with?('-') }
|
20
|
+
inner_word_variants = words.select { |w| !w.start_with?('$') }
|
21
|
+
|
22
|
+
word_count = (opts[:solidity] || 1) + 1
|
23
|
+
|
24
|
+
last_word = Ryba.pick(last_word_variants)
|
25
|
+
|
26
|
+
parts = Ryba.pick_multi(inner_word_variants - [last_word], word_count - 1)
|
27
|
+
name = (parts << last_word).map { |w| w.sub(/^[-$]/, '') } * ''
|
28
|
+
|
29
|
+
if rand(5) > 2
|
30
|
+
suffix = Ryba.pick(Data::CompanyNameSuffixes)
|
31
|
+
|
32
|
+
if suffix.start_with?('-')
|
33
|
+
name << suffix
|
34
|
+
else
|
35
|
+
name = "#{name} #{suffix}"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
name
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/ryba/data.rb
CHANGED
@@ -577,7 +577,7 @@ module Ryba
|
|
577
577
|
Нефтеюганск Нижневартовск Нягань Покачи Пыть-Ях Радужный
|
578
578
|
Советский Сургут Урай Югорск),
|
579
579
|
|
580
|
-
'Ямало-Ненецкий автономный округ' => [nil] + %w(Губкинский Лабытнанги Муравленко Надым Новый_Уренгой
|
580
|
+
'Ямало-Ненецкий автономный округ' => [nil] + %w(Губкинский Лабытнанги Муравленко Надым Новый_Уренгой
|
581
581
|
Ноябрьск Салехард),
|
582
582
|
|
583
583
|
'Челябинская обл.' => %w(Челябинск Аша Бакал Верхнеуральск Верхний_Уфалей Еманжелинск Златоуст Карабаш
|
@@ -813,5 +813,55 @@ module Ryba
|
|
813
813
|
'Лесной проезд', 'Московское ш.', 'пл. Свободы пл', 'Северный проезд'
|
814
814
|
]
|
815
815
|
).freeze
|
816
|
+
|
817
|
+
# вдохновлено http://www.brendogenerator.ru
|
818
|
+
#
|
819
|
+
# префикс $ у слова означает, что оно ставится в конец названия
|
820
|
+
# префикс - у слова означает, что оно не должно ставиться в конец названия
|
821
|
+
CompanyNameParts = {
|
822
|
+
:prom => %w($Автоматика Волокно Гео $Гидравлика Гидро Гипро Деталь Дизель Запчасть
|
823
|
+
$Индустрия Инструмент Кран Маш Мех Монтаж Нано $Обработка Пром
|
824
|
+
-Резино Рем -Станко Тех Техно Трак -Тракторо),
|
825
|
+
|
826
|
+
:stroy => %w(Архитект Бетон Дверь Дизайн Дор -Жил Кирпич Мастер Монолит
|
827
|
+
Монтаж Окно Ремонт Строй Цемент),
|
828
|
+
|
829
|
+
:torg => %w(Загран Ком Коммерц Комплект Комплектация Маркет Опт $Поставка
|
830
|
+
Сбыт Снаб Торг Трейд Трейдинг),
|
831
|
+
|
832
|
+
:resurs => %w(Атом Втор Газ Лес Лесхоз -Нефте Полимер -Природ Ресурс Синтез
|
833
|
+
Сырье Тепло -Термо -Угле Хим Электро Энерго),
|
834
|
+
|
835
|
+
:metall => %w(Втормет Комбинат Металл Метиз $Поковка Прокат Сплав Сталь
|
836
|
+
Стандарт -Труб Ферро Цветмет Чермет),
|
837
|
+
|
838
|
+
:it => %w(Веб Инфо Информ Ком Медиа Радио Сайт Связь Сеть Софт -Теле Телеком),
|
839
|
+
|
840
|
+
:sport => %w(-Вело Вояж Загран $Поездка Спорт Тур Экстрим),
|
841
|
+
|
842
|
+
:transport => %w(Авиа Авто Аэро Груз $Доставка -Желдор $Перевозка
|
843
|
+
Транзит Транс Экспресс),
|
844
|
+
|
845
|
+
:obr => %w(Академ $Академия -Науч Пед Стандарт Тренинг -Учеб $Школа $НИИ),
|
846
|
+
|
847
|
+
:legprom => %w(Джинс Кож Костюм $Одежда Пошив Текстиль Трикотаж),
|
848
|
+
|
849
|
+
:pischevka => %w(Агро Вино -Колбас $Колбасы Кондитер $Консервы -Ликеро Масло Мясо Пиво -Пище
|
850
|
+
-Птице -Рыб $Рыба Сало Сель Сельхоз -Спирто Сыр -Сыро $Удобрение -Хладо
|
851
|
+
Хлеб Хоз),
|
852
|
+
|
853
|
+
:fin => %w(Аудит Банк Брокер -Бух -Валют Инвест $Ипотека Капитал Консалт Кредит Лизинг
|
854
|
+
Резерв Страх Траст Финанс $Фонд Эконом),
|
855
|
+
|
856
|
+
:gos => %w(-Воен -Гос Граждан $Контроль Налог Мин Обл Оборон Регион $Учреждение),
|
857
|
+
|
858
|
+
:common => %w(Альянс Бизнес Комбинат Комплект Продукт Проект -Проф Сервис $Системы Спец
|
859
|
+
Стандарт $Станция $Техника $Технология $Фабрика Центр)
|
860
|
+
}.freeze
|
861
|
+
|
862
|
+
Industries = (CompanyNameParts.keys - [:common]).freeze
|
863
|
+
|
864
|
+
CompanyNameSuffixes = %w(-Про -Элит -Люкс -Гарант -Эксклюзив -Премиум
|
865
|
+
Групп Плаза Кампани Холдинг Индастриз Продакшенз Инкорпорейтед)
|
816
866
|
end
|
817
867
|
end
|
data/ryba.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ryba}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["oleg dashevskii"]
|
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
"VERSION.yml",
|
24
24
|
"lib/ryba.rb",
|
25
25
|
"lib/ryba/address.rb",
|
26
|
+
"lib/ryba/company.rb",
|
26
27
|
"lib/ryba/data.rb",
|
27
28
|
"lib/ryba/name.rb",
|
28
29
|
"lib/ryba/phone_number.rb",
|
data/spec/ryba_spec.rb
CHANGED
@@ -63,4 +63,20 @@ describe "Ryba" do
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
end
|
66
|
+
|
67
|
+
describe "Company" do
|
68
|
+
it "#name should work" do
|
69
|
+
20.times do
|
70
|
+
n = Ryba::Company.name
|
71
|
+
n.should_not be_empty
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
it "#name with options should work" do
|
76
|
+
20.times do
|
77
|
+
n = Ryba::Company.name(:solidity => 3)
|
78
|
+
n.should_not be_empty
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
66
82
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ryba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- oleg dashevskii
|
@@ -35,6 +35,7 @@ files:
|
|
35
35
|
- VERSION.yml
|
36
36
|
- lib/ryba.rb
|
37
37
|
- lib/ryba/address.rb
|
38
|
+
- lib/ryba/company.rb
|
38
39
|
- lib/ryba/data.rb
|
39
40
|
- lib/ryba/name.rb
|
40
41
|
- lib/ryba/phone_number.rb
|