ryba 0.1.0 → 0.1.1
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 +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
|