petrovich 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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