petrovich 0.0.5 → 0.0.6

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.md CHANGED
@@ -18,9 +18,10 @@
18
18
 
19
19
  $ gem install petrovich
20
20
 
21
- ## Зависимость ruby
21
+ ## Зависимоси
22
22
 
23
23
  * Ruby >= 1.9.1
24
+ * Не зависит от Rails
24
25
 
25
26
  ## Использование
26
27
 
@@ -29,16 +30,16 @@
29
30
  ```ruby
30
31
  # Указание пола снижает количество отказов
31
32
  p = Petrovich.new(:male)
32
- p.lastname('Иванов', :dative) # => Иванову
33
- p.firstname('Пётр', :dative) # => Петру
34
- p.lastname('Сергеевич', :dative) # => Сергеевичу
33
+ p.lastname('Иванов', :dative) # => Иванову
34
+ p.firstname('Пётр', :dative) # => Петру
35
+ p.middlename('Сергеевич', :dative) # => Сергеевичу
35
36
  ```
36
37
 
37
- Конструктор класса `Petrovich` принимает в качестве единственного аргумента пол. Пол может иметь значения `:male`, `:female` или `:both`. Последнее означает, что имя не склоняется по родам (обычно, это не нужно).
38
+ Конструктор класса `Petrovich` принимает пол в качестве единственного аргумента. Пол может иметь значения `:male`, `:female` или `:androgynous`. Последнее означает, что имя не склоняется по родам. Обычно, не склоняются украинские фамилии, как например фамилия Симоненко, а так же фамилии, пришедшие в русский язык из европейских языков, например - Нельсон. Но всегда лучше, если пол вам известен и вы указываете его - так увеличивается вероятность правильного распознавания.
38
39
 
39
40
  ### Продвинутое использование
40
41
 
41
- Вы можете подмешать модуль `Petrovich::Extension` в любой класс. Это особенно полезно при использовании `ActiveRecord` и подобных ORM.
42
+ Вы можете подмешать модуль `Petrovich::Extension` в любой класс. Это особенно полезно при использовании `ActiveRecord` и подобных ORM:
42
43
 
43
44
  ```ruby
44
45
  class User < ActiveRecord::Base
@@ -62,10 +63,10 @@ class User < ActiveRecord::Base
62
63
  end
63
64
 
64
65
  # Если пол не был указан, используется автоматическое определение
65
- # пола на основе отчества. Если отчество так же не было указано,
66
- # пытаемся определить правильное слконение на основе файла правил.
66
+ # пола на основе отчества. Если отчество также не было указано,
67
+ # пытаемся определить правильное склонение на основе файла правил.
67
68
  def my_gender
68
- :male # :male, :female или :both
69
+ :male # :male, :female или :androgynous
69
70
  end
70
71
  end
71
72
  ```
@@ -99,8 +100,11 @@ end
99
100
 
100
101
  ```ruby
101
102
  user = User.new
102
- user.my_firstname # => Пётр
103
- user.my_firstname_dative # => Петру
103
+ user.my_firstname # => Пётр
104
+
105
+ user.my_firstname_dative # => Петру
106
+ user.my_middlename_dative # => Петровичу
107
+ user.my_lastname_dative # => Петренко
104
108
  ```
105
109
 
106
110
  и для второго примера:
@@ -108,12 +112,13 @@ user.my_firstname_dative # => Петру
108
112
  ```ruby
109
113
  person = Person.new
110
114
  person.name # => Иван
111
- person.name_dative # => Ивану
112
- ```
113
115
 
114
- Вы просто добавляете `_падеж` в конец имени оригинального метода и получаете нужное значение. Вот список суффиксов, которые вы можете добавить к имени оригинального метода, чтобы получить имя в нужном падаже:
116
+ person.my_firstname_dative # => Ивану
117
+ person.my_middlename_dative # => Олеговичу
118
+ person.my_lastname_dative # => Сафронову
119
+ ```
120
+ Изначальное имя должно быть в именительнои падеже. Вы просто добавляете `_падеж` в конец имени оригинального метода и получаете нужное значение. Вот список суффиксов, которые вы можете добавить к имени оригинального метода, чтобы получить имя в нужном падаже:
115
121
 
116
- * nominative - именительный
117
122
  * genitive - родительный
118
123
  * dative - дательный
119
124
  * accusative - винительный
@@ -129,10 +134,10 @@ person.name_dative # => Ивану
129
134
 
130
135
  Мы планируем и далее улучшать этот проект. Поэтому, нам важен отклик от других разработчиков, использующих этот гем. Вот наши планы:
131
136
 
137
+ * Тесты на базу фамилий.
132
138
  * Добавить debug-mode, чтобы видеть, какое именно правило применилось
133
139
  * Cli-interface, чтобы работать с гемом из коммандной строки
134
140
  * Веб-интерфейс для проверки имён (ф.и.о) и их логгирования, для улучшения правил распознавания.
135
- * Больше тестов
136
141
  * Проверка работы с mongoid и mongo-mapper
137
142
 
138
143
  Если вы хотите помочь этому проекту, вы можете реализовать любой план из перечисленных выше. Но прежде свяжитесь с разработчиками, чтобы ваши и наши планы не пересекались.
@@ -70,9 +70,9 @@ class Petrovich
70
70
  #
71
71
  # detect_gender('Алексеевич') # => male
72
72
  #
73
- # Если пол не был определён, метод возвращает значение +both+
73
+ # Если пол не был определён, метод возвращает значение +androgynous+
74
74
  #
75
- # detect_gender('блаблабла') # => both
75
+ # detect_gender('блаблабла') # => androgynous
76
76
  #
77
77
  def detect_gender(midname)
78
78
  case UnicodeUtils.downcase(midname[-2, 2])
@@ -81,8 +81,8 @@ class Petrovich
81
81
  when 'на'
82
82
  'female'
83
83
  else
84
- 'both'
84
+ 'androgynous'
85
85
  end
86
86
  end
87
87
  end
88
- end
88
+ end
@@ -20,7 +20,7 @@ class Petrovich
20
20
  #
21
21
  # [:+gender+]
22
22
  # Указывает метод, возвращающий пол. Если пол не был указан, используется автоматическое определение
23
- # пола на основе отчества. Если отчество так же не было указано, пытаемся определить правильное слконение
23
+ # пола на основе отчества. Если отчество также не было указано, пытаемся определить правильное склонение
24
24
  # на основе файла правил.
25
25
  #
26
26
  # Пример использования
@@ -46,7 +46,7 @@ class Petrovich
46
46
  # end
47
47
  #
48
48
  # def my_gender
49
- # :male # :male, :female или :both
49
+ # :male # :male, :female или :androgynous
50
50
  # end
51
51
  #
52
52
  # end
@@ -118,4 +118,4 @@ class Petrovich
118
118
 
119
119
  protected :petrovich_method_regex
120
120
  end
121
- end
121
+ end
@@ -106,4 +106,4 @@ class Petrovich
106
106
  end
107
107
 
108
108
  end
109
- end
109
+ end
@@ -12,7 +12,7 @@
12
12
  #
13
13
  # В свою очередь, каждая подгруппа содержит набор правил. Каждое правило содержит 3 составляющие:
14
14
  #
15
- # * Пол (gender). Допустимые значения: +male+, +female+, +both+
15
+ # * Пол (gender). Допустимые значения: +male+, +female+, +androgynous+
16
16
  # * Что заменять (test). Массив суффиксов для замены.
17
17
  # * На что заменять (mods). Массив модификаторов. Модификатор может иметь впереди один или
18
18
  # дефис, он означает количество символов, которые нужно будет вырезать из слова.
@@ -29,15 +29,15 @@
29
29
  #
30
30
  lastname:
31
31
  exceptions:
32
- - gender: both
32
+ - gender: androgynous
33
33
  test: [дюма, тома, дега, люка, ферма, гамарра, петипа, шандра]
34
34
  mods: [., ., ., ., .]
35
35
 
36
- - gender: both
36
+ - gender: androgynous
37
37
  test: [гусь, ремень, камень, онук, богода, нечипас, долгопалец, маненок, рева, кива]
38
38
  mods: [., ., ., ., .]
39
39
 
40
- - gender: both
40
+ - gender: androgynous
41
41
  test: [вий, сой, цой, хой]
42
42
  mods: [-я, -ю, -я, -ем, -е]
43
43
 
@@ -54,7 +54,7 @@ lastname:
54
54
  test: [ая]
55
55
  mods: [--ой, --ой, --ую, --ой, --ой]
56
56
 
57
- - gender: both
57
+ - gender: androgynous
58
58
  test: [ская]
59
59
  mods: [--ой, --ой, --ую, --ой, --ой]
60
60
 
@@ -62,141 +62,141 @@ lastname:
62
62
  test: [на]
63
63
  mods: [-ой, -ой, -у, -ой, -ой]
64
64
 
65
- - gender: both
65
+ - gender: androgynous
66
66
  test: [иной]
67
67
  mods: [-я, -ю, -я, -ем, -е]
68
68
 
69
- - gender: both
69
+ - gender: androgynous
70
70
  test: [уй]
71
71
  mods: [-я, -ю, -я, -ем, -е]
72
72
 
73
- - gender: both
73
+ - gender: androgynous
74
74
  test: [ца]
75
75
  mods: [-ы, -е, -у, -ей, -е]
76
76
 
77
- - gender: both
77
+ - gender: androgynous
78
78
  test: [рих]
79
79
  mods: [а, у, а, ом, е]
80
80
 
81
- - gender: both
81
+ - gender: androgynous
82
82
  test: [ия]
83
83
  mods: [., ., ., ., .]
84
84
 
85
- - gender: both
85
+ - gender: androgynous
86
86
  test: [иа, аа, оа, уа, ыа, еа, юа, эа]
87
87
  mods: [., ., ., ., .]
88
88
 
89
- - gender: both
89
+ - gender: androgynous
90
90
  test: [их, ых]
91
91
  mods: [., ., ., ., .]
92
92
 
93
- - gender: both
93
+ - gender: androgynous
94
94
  test: [о, е, э, и, ы, у, ю]
95
95
  mods: [., ., ., ., .]
96
96
 
97
- - gender: both
97
+ - gender: androgynous
98
98
  test: [ова, ева]
99
99
  mods: [-ой, -ой, -у, -ой, -ой]
100
100
 
101
- - gender: both
101
+ - gender: androgynous
102
102
  test: [га, ка, ха, ча, ща, жа]
103
103
  mods: [-и, -е, -у, -ой, -е]
104
104
 
105
- - gender: both
105
+ - gender: androgynous
106
106
  test: [ца]
107
107
  mods: [-и, -е, -у, -ей, -е]
108
108
 
109
- - gender: both
109
+ - gender: androgynous
110
110
  test: [а]
111
111
  mods: [-ы, -е, -у, -ой, -е]
112
112
 
113
- - gender: both
113
+ - gender: androgynous
114
114
  test: [ь]
115
115
  mods: [-я, -ю, -я, -ем, -е]
116
116
 
117
- - gender: both
117
+ - gender: androgynous
118
118
  test: [ия]
119
119
  mods: [-и, -и, -ю, -ей, -и]
120
120
 
121
- - gender: both
121
+ - gender: androgynous
122
122
  test: [я]
123
123
  mods: [-и, -е, -ю, -ей, -е]
124
124
 
125
- - gender: both
125
+ - gender: androgynous
126
126
  test: [ей]
127
127
  mods: [-я, -ю, -я, -ем, -е]
128
128
 
129
- - gender: both
129
+ - gender: androgynous
130
130
  test: [ян, ан, йн]
131
131
  mods: [а, у, а, ом, е]
132
132
 
133
- - gender: both
133
+ - gender: androgynous
134
134
  test: [ынец, обец]
135
135
  mods: [--ца, --цу, --ца, --цем, --це]
136
136
 
137
- - gender: both
137
+ - gender: androgynous
138
138
  test: [онец, овец]
139
139
  mods: [--ца, --цу, --ца, --цом, --це]
140
140
 
141
- - gender: both
141
+ - gender: androgynous
142
142
  test: [ай]
143
143
  mods: [-я, -ю, -я, -ем, -е]
144
144
 
145
- - gender: both
145
+ - gender: androgynous
146
146
  test: [гой, кой]
147
147
  mods: [-го, -му, -го, --им, -м]
148
148
 
149
- - gender: both
149
+ - gender: androgynous
150
150
  test: [ой]
151
151
  mods: [-го, -му, -го, --ым, -м]
152
152
 
153
- - gender: both
153
+ - gender: androgynous
154
154
  test: [ах, ив]
155
155
  mods: [а, у, а, ом, е]
156
156
 
157
- - gender: both
157
+ - gender: androgynous
158
158
  test: [ший, щий, жий, ний]
159
159
  mods: [--его, --ему, --его, -м, --ем]
160
160
 
161
- - gender: both
161
+ - gender: androgynous
162
162
  test: [кий, ый]
163
163
  mods: [--ого, --ому, --ого, -м, --ом]
164
164
 
165
- - gender: both
165
+ - gender: androgynous
166
166
  test: [ий]
167
167
  mods: [-я, -ю, -я, -ем, -и]
168
168
 
169
- - gender: both
169
+ - gender: androgynous
170
170
  test: [ок]
171
171
  mods: [--ка, --ку, --ка, --ком, --ке]
172
172
 
173
- - gender: both
173
+ - gender: androgynous
174
174
  test: [ец]
175
175
  mods: [--ца, --цу, --ца, --цом, --це]
176
176
 
177
- - gender: both
177
+ - gender: androgynous
178
178
  test: [ц, ч, ш, щ]
179
179
  mods: [а, у, а, ем, е]
180
180
 
181
- - gender: both
181
+ - gender: androgynous
182
182
  test: [в, н]
183
183
  mods: [а, у, а, ым, е]
184
184
 
185
- - gender: both
185
+ - gender: androgynous
186
186
  test: [б, г, д, ж, з, к, л, м, п, р, с, т, ф, х]
187
187
  mods: [а, у, а, ом, е]
188
188
 
189
189
  firstname:
190
190
  exceptions:
191
- - gender: both
191
+ - gender: androgynous
192
192
  test: [лев]
193
193
  mods: [--ьва, --ьву, --ьва, --ьвом, --ьве]
194
194
 
195
- - gender: both
195
+ - gender: androgynous
196
196
  test: [пётр]
197
197
  mods: [---етра, ---етру, ---етра, ---етром, ---етре]
198
198
 
199
- - gender: both
199
+ - gender: androgynous
200
200
  test: [павел]
201
201
  mods: [--ла, --лу, --ла, --лом, --ле]
202
202
 
@@ -209,7 +209,7 @@ firstname:
209
209
  mods: [., ., ., ., .]
210
210
 
211
211
  suffixes:
212
- - gender: both
212
+ - gender: androgynous
213
213
  test: [е, ё, и, о, у, ы, э, ю]
214
214
  mods: [., ., ., ., .]
215
215
 
@@ -225,45 +225,45 @@ firstname:
225
225
  test: [ь]
226
226
  mods: [-я, -ю, -я, -ем, -е]
227
227
 
228
- - gender: both
228
+ - gender: androgynous
229
229
  test: [га, ка, ха, ча, ща, жа]
230
230
  mods: [-и, -е, -у, -ой, -е]
231
231
 
232
- - gender: both
232
+ - gender: androgynous
233
233
  test: [а]
234
234
  mods: [-ы, -е, -у, -ой, -е]
235
235
 
236
- - gender: both
236
+ - gender: androgynous
237
237
  test: [ия]
238
238
  mods: [-и, -и, -ю, -ей, -и]
239
239
 
240
- - gender: both
240
+ - gender: androgynous
241
241
  test: [я]
242
242
  mods: [-и, -е, -ю, -ей, -е]
243
243
 
244
- - gender: both
244
+ - gender: androgynous
245
245
  test: [ей]
246
246
  mods: [-я, -ю, -я, -ем, -е]
247
247
 
248
- - gender: both
248
+ - gender: androgynous
249
249
  test: [ий]
250
250
  mods: [-я, -ю, -я, -ем, -и]
251
251
 
252
- - gender: both
252
+ - gender: androgynous
253
253
  test: [й]
254
254
  mods: [-я, -ю, -я, -ем, -е]
255
255
 
256
- - gender: both
256
+ - gender: androgynous
257
257
  test: [б, в, г, д, ж, з, к, л, м, н, п, р, с, т, ф, х, ц, ч]
258
258
  mods: [а, у, а, ом, е]
259
259
 
260
260
  middlename:
261
261
  suffixes:
262
- - gender: both
262
+ - gender: androgynous
263
263
  test: [ич]
264
264
  mods: [а, у, а, ем, е]
265
265
 
266
- - gender: both
266
+ - gender: androgynous
267
267
  test: [на]
268
268
  mods: [-ы, -е, -у, -ой, -е]
269
269
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: petrovich
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-27 00:00:00.000000000 Z
12
+ date: 2013-04-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: unicode_utils