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.
@@ -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