ryba 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.
@@ -1,5 +1,5 @@
1
1
  ---
2
- :patch: 0
2
+ :patch: 1
3
3
  :major: 0
4
4
  :build:
5
5
  :minor: 1
@@ -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 File.join(File.dirname(__FILE__), 'ryba', 'data')
37
- require File.join(File.dirname(__FILE__), 'ryba', 'name')
38
- require File.join(File.dirname(__FILE__), 'ryba', 'phone_number')
39
- require File.join(File.dirname(__FILE__), 'ryba', 'address')
40
+ require 'ryba/data'
41
+ require 'ryba/name'
42
+ require 'ryba/phone_number'
43
+ require 'ryba/address'
44
+ require 'ryba/company'
@@ -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
@@ -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
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ryba}
8
- s.version = "0.1.0"
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",
@@ -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: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
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