Completed
Push — master ( 45747c...f9dede )
by Peter
27s queued 11s
created
AnalyzerText/Filter/WordList/Union.php 1 patch
Indentation   +62 added lines, -62 removed lines patch added patch discarded remove patch
@@ -14,66 +14,66 @@
 block discarded – undo
14 14
  */
15 15
 class Union extends WordList
16 16
 {
17
-    /**
18
-     * Возвращает список слов.
19
-     *
20
-     * @return array
21
-     */
22
-    public function getWords()
23
-    {
24
-        return array(
25
-            'как',
26
-            'словно',
27
-            'так',
28
-            'для',
29
-            'того',
30
-            'чтобы',
31
-            'тоже',
32
-            'зато',
33
-            'потому',
34
-            'что',
35
-            'и',
36
-            'а',
37
-            'или',
38
-            'но',
39
-            'однако',
40
-            'ни',
41
-            'если',
42
-            'то',
43
-            'да',
44
-            'не',
45
-            'только',
46
-            'или',
47
-            'либо',
48
-            'ли',
49
-            'же',
50
-            'все',
51
-            'столько',
52
-            'также',
53
-            'притом',
54
-            'причём',
55
-            'причем',
56
-            'есть',
57
-            'именно',
58
-            'когда',
59
-            'лишь',
60
-            'едва',
61
-            'будто',
62
-            'точно',
63
-            'бы',
64
-            'коли',
65
-            'ежели',
66
-            'несмотря',
67
-            'на',
68
-            'хотя',
69
-            'хоть',
70
-            'пускай',
71
-            'дабы',
72
-            'c',
73
-            'тем',
74
-            'ведь',
75
-            'чем',
76
-            'в то же время',
77
-        );
78
-    }
17
+	/**
18
+	 * Возвращает список слов.
19
+	 *
20
+	 * @return array
21
+	 */
22
+	public function getWords()
23
+	{
24
+		return array(
25
+			'как',
26
+			'словно',
27
+			'так',
28
+			'для',
29
+			'того',
30
+			'чтобы',
31
+			'тоже',
32
+			'зато',
33
+			'потому',
34
+			'что',
35
+			'и',
36
+			'а',
37
+			'или',
38
+			'но',
39
+			'однако',
40
+			'ни',
41
+			'если',
42
+			'то',
43
+			'да',
44
+			'не',
45
+			'только',
46
+			'или',
47
+			'либо',
48
+			'ли',
49
+			'же',
50
+			'все',
51
+			'столько',
52
+			'также',
53
+			'притом',
54
+			'причём',
55
+			'причем',
56
+			'есть',
57
+			'именно',
58
+			'когда',
59
+			'лишь',
60
+			'едва',
61
+			'будто',
62
+			'точно',
63
+			'бы',
64
+			'коли',
65
+			'ежели',
66
+			'несмотря',
67
+			'на',
68
+			'хотя',
69
+			'хоть',
70
+			'пускай',
71
+			'дабы',
72
+			'c',
73
+			'тем',
74
+			'ведь',
75
+			'чем',
76
+			'в то же время',
77
+		);
78
+	}
79 79
 }
Please login to merge, or discard this patch.
AnalyzerText/Filter/WordList/Pronoun.php 1 patch
Indentation   +337 added lines, -337 removed lines patch added patch discarded remove patch
@@ -14,342 +14,342 @@
 block discarded – undo
14 14
  */
15 15
 class Pronoun extends WordList
16 16
 {
17
-    /**
18
-     * Возвращает список слов.
19
-     *
20
-     * @return array
21
-     */
22
-    public function getWords()
23
-    {
24
-        return array(
25
-            // русские местоимения
26
-            'я',
27
-            'меня',
28
-            'мне',
29
-            'мной',
30
-            'мною',
31
-            'обо мне',
32
-            'мы',
33
-            'нас',
34
-            'нам',
35
-            'нами',
36
-            'о нас',
37
-            'ты',
38
-            'тебя',
39
-            'тебе',
40
-            'тобой',
41
-            'тобою',
42
-            'вы',
43
-            'вас',
44
-            'вам',
45
-            'вами',
46
-            'он',
47
-            'его',
48
-            'него',
49
-            'ему',
50
-            'нему',
51
-            'им',
52
-            'ним',
53
-            'нём',
54
-            'о нём',
55
-            'нем',
56
-            'она',
57
-            'её',
58
-            'ее',
59
-            'неё',
60
-            'нее',
61
-            'ей',
62
-            'ней',
63
-            'ею',
64
-            'нею',
65
-            'оно',
66
-            'они',
67
-            'их',
68
-            'них',
69
-            'ими',
70
-            'ними',
71
-            'о них',
72
-            'себя',
73
-            'себе',
74
-            'собой',
75
-            'собою',
76
-            'мой',
77
-            'моего',
78
-            'моему',
79
-            'моё',
80
-            'мое',
81
-            'моём',
82
-            'о моём',
83
-            'моем',
84
-            'моя',
85
-            'моей',
86
-            'мою',
87
-            'мои',
88
-            'моих',
89
-            'моим',
90
-            'моими',
91
-            'наш',
92
-            'нашего',
93
-            'нашим',
94
-            'нашем',
95
-            'наша',
96
-            'нашей',
97
-            'нашу',
98
-            'наше',
99
-            'о нашем',
100
-            'наши',
101
-            'наших',
102
-            'нашими',
103
-            'твой',
104
-            'твоего',
105
-            'твоему',
106
-            'твоим',
107
-            'твоём',
108
-            'о твоём',
109
-            'твоем',
110
-            'твоя',
111
-            'твоей',
112
-            'твою',
113
-            'твое',
114
-            'ваш',
115
-            'вашего',
116
-            'вашему',
117
-            'вашим',
118
-            'вашем',
119
-            'о вашем',
120
-            'ваша',
121
-            'вашей',
122
-            'вашу',
123
-            'ваше',
124
-            'свой',
125
-            'своих',
126
-            'своим',
127
-            'своими',
128
-            'своя',
129
-            'своей',
130
-            'свою',
131
-            'своё',
132
-            'свое',
133
-            'своего',
134
-            'своему',
135
-            'своём',
136
-            'о своём',
137
-            'своем',
138
-            'свои',
139
-            'о своих',
140
-            'кто',
141
-            'что',
142
-            'каков',
143
-            'чей',
144
-            'который',
145
-            'какой',
146
-            'какое',
147
-            'какая',
148
-            'какие',
149
-            'какого',
150
-            'каких',
151
-            'какому',
152
-            'каким',
153
-            'какую',
154
-            'какою',
155
-            'какими',
156
-            'каком',
157
-            'сколько',
158
-            'столько',
159
-            'этот',
160
-            'тот',
161
-            'такой',
162
-            'таков',
163
-            'такова',
164
-            'сей',
165
-            'весь',
166
-            'всякий',
167
-            'сам',
168
-            'самый',
169
-            'каждый',
170
-            'любой',
171
-            'другой',
172
-            'иной',
173
-            'никто',
174
-            'ничто',
175
-            'некого',
176
-            'нечего',
177
-            'нисколько',
178
-            'никакой',
179
-            'ничей',
180
-            'некто',
181
-            'нечто',
182
-            'некий',
183
-            'некоторый',
184
-            'несколько',
185
-            'это',
186
-            'эта',
187
-            'эти',
188
-            'этого',
189
-            'этой',
190
-            'этих',
191
-            'этому',
192
-            'этим',
193
-            'эту',
194
-            'этою',
195
-            'этими',
196
-            'этом',
197
-            'сие',
198
-            'сия',
199
-            'сии',
200
-            'сего',
201
-            'сих',
202
-            'сему',
203
-            'сим',
204
-            'сию',
205
-            'сею',
206
-            'сиею',
207
-            'сими',
208
-            'сём',
209
-            'то',
210
-            'та',
211
-            'те',
212
-            'того',
213
-            'той',
214
-            'тех',
215
-            'тому',
216
-            'тем',
217
-            'ту',
218
-            'тою',
219
-            'теми',
220
-            'данный',
221
-            'данное',
222
-            'данная',
223
-            'данного',
224
-            'данной',
225
-            'данному',
226
-            'данную',
227
-            'данною',
228
-            'данном',
229
-            'всё',
230
-            'вся',
231
-            'все',
232
-            'всего',
233
-            'всей',
234
-            'всех',
235
-            'всему',
236
-            'всем',
237
-            'всю',
238
-            'всею',
239
-            'всеми',
240
-            'всём',
241
-            'вот',
242
-            'кому',
243
-            'этакий',
244
-            'этакое',
245
-            'этакая',
246
-            'этакие',
247
-            'этакого',
248
-            'этакой',
249
-            'этаких',
250
-            'этакому',
251
-            'этаким',
252
-            'этакую',
253
-            'этакою',
254
-            'этакими',
255
-            'этаком',
256
-            'другие',
257
-            'какой-то',
258
-            'оба',
259
-            'тот или другой',
260
-            'и тот и другой',
261
-            'мало',
262
-            'немногие',
263
-            'себя,',
264
-            'сама',
265
-            'ёё',
266
-            'само,',
267
-            'немного',
268
-            'много',
269
-            'многие',
270
-            'ни тот',
271
-            'ни другой',
272
-            'нет',
273
-            'ни один',
274
-            'друг друга',
275
-            'некоторые',
276
-            'тот же самый',
277
-            'сами',
278
-            'что бы ни',
279
-            'какой бы ни',
280
-            'кто бы ни',
281
-            'которого',
282
-            'которому',
283
-            'ваши',
284
-            'кое-*',
285
-            '*-то',
286
-            '*-либо',
287
-            '*-нибудь',
288
-            '/^том$/u', // местоимение, а не имя Том
17
+	/**
18
+	 * Возвращает список слов.
19
+	 *
20
+	 * @return array
21
+	 */
22
+	public function getWords()
23
+	{
24
+		return array(
25
+			// русские местоимения
26
+			'я',
27
+			'меня',
28
+			'мне',
29
+			'мной',
30
+			'мною',
31
+			'обо мне',
32
+			'мы',
33
+			'нас',
34
+			'нам',
35
+			'нами',
36
+			'о нас',
37
+			'ты',
38
+			'тебя',
39
+			'тебе',
40
+			'тобой',
41
+			'тобою',
42
+			'вы',
43
+			'вас',
44
+			'вам',
45
+			'вами',
46
+			'он',
47
+			'его',
48
+			'него',
49
+			'ему',
50
+			'нему',
51
+			'им',
52
+			'ним',
53
+			'нём',
54
+			'о нём',
55
+			'нем',
56
+			'она',
57
+			'её',
58
+			'ее',
59
+			'неё',
60
+			'нее',
61
+			'ей',
62
+			'ней',
63
+			'ею',
64
+			'нею',
65
+			'оно',
66
+			'они',
67
+			'их',
68
+			'них',
69
+			'ими',
70
+			'ними',
71
+			'о них',
72
+			'себя',
73
+			'себе',
74
+			'собой',
75
+			'собою',
76
+			'мой',
77
+			'моего',
78
+			'моему',
79
+			'моё',
80
+			'мое',
81
+			'моём',
82
+			'о моём',
83
+			'моем',
84
+			'моя',
85
+			'моей',
86
+			'мою',
87
+			'мои',
88
+			'моих',
89
+			'моим',
90
+			'моими',
91
+			'наш',
92
+			'нашего',
93
+			'нашим',
94
+			'нашем',
95
+			'наша',
96
+			'нашей',
97
+			'нашу',
98
+			'наше',
99
+			'о нашем',
100
+			'наши',
101
+			'наших',
102
+			'нашими',
103
+			'твой',
104
+			'твоего',
105
+			'твоему',
106
+			'твоим',
107
+			'твоём',
108
+			'о твоём',
109
+			'твоем',
110
+			'твоя',
111
+			'твоей',
112
+			'твою',
113
+			'твое',
114
+			'ваш',
115
+			'вашего',
116
+			'вашему',
117
+			'вашим',
118
+			'вашем',
119
+			'о вашем',
120
+			'ваша',
121
+			'вашей',
122
+			'вашу',
123
+			'ваше',
124
+			'свой',
125
+			'своих',
126
+			'своим',
127
+			'своими',
128
+			'своя',
129
+			'своей',
130
+			'свою',
131
+			'своё',
132
+			'свое',
133
+			'своего',
134
+			'своему',
135
+			'своём',
136
+			'о своём',
137
+			'своем',
138
+			'свои',
139
+			'о своих',
140
+			'кто',
141
+			'что',
142
+			'каков',
143
+			'чей',
144
+			'который',
145
+			'какой',
146
+			'какое',
147
+			'какая',
148
+			'какие',
149
+			'какого',
150
+			'каких',
151
+			'какому',
152
+			'каким',
153
+			'какую',
154
+			'какою',
155
+			'какими',
156
+			'каком',
157
+			'сколько',
158
+			'столько',
159
+			'этот',
160
+			'тот',
161
+			'такой',
162
+			'таков',
163
+			'такова',
164
+			'сей',
165
+			'весь',
166
+			'всякий',
167
+			'сам',
168
+			'самый',
169
+			'каждый',
170
+			'любой',
171
+			'другой',
172
+			'иной',
173
+			'никто',
174
+			'ничто',
175
+			'некого',
176
+			'нечего',
177
+			'нисколько',
178
+			'никакой',
179
+			'ничей',
180
+			'некто',
181
+			'нечто',
182
+			'некий',
183
+			'некоторый',
184
+			'несколько',
185
+			'это',
186
+			'эта',
187
+			'эти',
188
+			'этого',
189
+			'этой',
190
+			'этих',
191
+			'этому',
192
+			'этим',
193
+			'эту',
194
+			'этою',
195
+			'этими',
196
+			'этом',
197
+			'сие',
198
+			'сия',
199
+			'сии',
200
+			'сего',
201
+			'сих',
202
+			'сему',
203
+			'сим',
204
+			'сию',
205
+			'сею',
206
+			'сиею',
207
+			'сими',
208
+			'сём',
209
+			'то',
210
+			'та',
211
+			'те',
212
+			'того',
213
+			'той',
214
+			'тех',
215
+			'тому',
216
+			'тем',
217
+			'ту',
218
+			'тою',
219
+			'теми',
220
+			'данный',
221
+			'данное',
222
+			'данная',
223
+			'данного',
224
+			'данной',
225
+			'данному',
226
+			'данную',
227
+			'данною',
228
+			'данном',
229
+			'всё',
230
+			'вся',
231
+			'все',
232
+			'всего',
233
+			'всей',
234
+			'всех',
235
+			'всему',
236
+			'всем',
237
+			'всю',
238
+			'всею',
239
+			'всеми',
240
+			'всём',
241
+			'вот',
242
+			'кому',
243
+			'этакий',
244
+			'этакое',
245
+			'этакая',
246
+			'этакие',
247
+			'этакого',
248
+			'этакой',
249
+			'этаких',
250
+			'этакому',
251
+			'этаким',
252
+			'этакую',
253
+			'этакою',
254
+			'этакими',
255
+			'этаком',
256
+			'другие',
257
+			'какой-то',
258
+			'оба',
259
+			'тот или другой',
260
+			'и тот и другой',
261
+			'мало',
262
+			'немногие',
263
+			'себя,',
264
+			'сама',
265
+			'ёё',
266
+			'само,',
267
+			'немного',
268
+			'много',
269
+			'многие',
270
+			'ни тот',
271
+			'ни другой',
272
+			'нет',
273
+			'ни один',
274
+			'друг друга',
275
+			'некоторые',
276
+			'тот же самый',
277
+			'сами',
278
+			'что бы ни',
279
+			'какой бы ни',
280
+			'кто бы ни',
281
+			'которого',
282
+			'которому',
283
+			'ваши',
284
+			'кое-*',
285
+			'*-то',
286
+			'*-либо',
287
+			'*-нибудь',
288
+			'/^том$/u', // местоимение, а не имя Том
289 289
 
290
-            // английские местоимения
291
-            'all',
292
-            'another',
293
-            'any',
294
-            'both',
295
-            'each',
296
-            'either',
297
-            'every',
298
-            'herself',
299
-            'himself',
300
-            'he',
301
-            'she',
302
-            'it',
303
-            'him',
304
-            'her',
305
-            'we',
306
-            'you',
307
-            'they',
308
-            'us',
309
-            'them',
310
-            'this',
311
-            'thet',
312
-            'these',
313
-            'thos',
314
-            'his',
315
-            'its',
316
-            'hers',
317
-            'our',
318
-            'your',
319
-            'their',
320
-            'ours',
321
-            'yours',
322
-            'theis',
323
-            'much',
324
-            'many',
325
-            'little',
326
-            'few',
327
-            'lot',
328
-            'i',
329
-            'itself',
330
-            'me',
331
-            'mine',
332
-            'my',
333
-            'myself',
334
-            'neither',
335
-            'none',
336
-            'one another',
337
-            'oneself',
338
-            'some',
339
-            'such',
340
-            'that',
341
-            'the same',
342
-            'themselves',
343
-            'those',
344
-            'what',
345
-            'whatever',
346
-            'which',
347
-            'whichever',
348
-            'who',
349
-            'whoever',
350
-            'whom',
351
-            'whose',
352
-            'yourself',
353
-        );
354
-    }
290
+			// английские местоимения
291
+			'all',
292
+			'another',
293
+			'any',
294
+			'both',
295
+			'each',
296
+			'either',
297
+			'every',
298
+			'herself',
299
+			'himself',
300
+			'he',
301
+			'she',
302
+			'it',
303
+			'him',
304
+			'her',
305
+			'we',
306
+			'you',
307
+			'they',
308
+			'us',
309
+			'them',
310
+			'this',
311
+			'thet',
312
+			'these',
313
+			'thos',
314
+			'his',
315
+			'its',
316
+			'hers',
317
+			'our',
318
+			'your',
319
+			'their',
320
+			'ours',
321
+			'yours',
322
+			'theis',
323
+			'much',
324
+			'many',
325
+			'little',
326
+			'few',
327
+			'lot',
328
+			'i',
329
+			'itself',
330
+			'me',
331
+			'mine',
332
+			'my',
333
+			'myself',
334
+			'neither',
335
+			'none',
336
+			'one another',
337
+			'oneself',
338
+			'some',
339
+			'such',
340
+			'that',
341
+			'the same',
342
+			'themselves',
343
+			'those',
344
+			'what',
345
+			'whatever',
346
+			'which',
347
+			'whichever',
348
+			'who',
349
+			'whoever',
350
+			'whom',
351
+			'whose',
352
+			'yourself',
353
+		);
354
+	}
355 355
 }
Please login to merge, or discard this patch.
AnalyzerText/Analyzer/Frequency.php 2 patches
Indentation   +57 added lines, -57 removed lines patch added patch discarded remove patch
@@ -14,68 +14,68 @@
 block discarded – undo
14 14
  */
15 15
 class Frequency extends Analyzer
16 16
 {
17
-    /**
18
-     * Список слов с частотой их появления.
19
-     *
20
-     * @var array
21
-     */
22
-    protected $frequencies = array();
17
+	/**
18
+	 * Список слов с частотой их появления.
19
+	 *
20
+	 * @var array
21
+	 */
22
+	protected $frequencies = array();
23 23
 
24
-    /**
25
-     * Список слов с частотой их появления в процентах.
26
-     *
27
-     * @var array
28
-     */
29
-    protected $percent = array();
24
+	/**
25
+	 * Список слов с частотой их появления в процентах.
26
+	 *
27
+	 * @var array
28
+	 */
29
+	protected $percent = array();
30 30
 
31
-    /**
32
-     * Очищает анализатор
33
-     *
34
-     * @return Frequency
35
-     */
36
-    public function clear()
37
-    {
38
-        $this->frequencies = array();
39
-        $this->percent = array();
40
-        parent::clear();
31
+	/**
32
+	 * Очищает анализатор
33
+	 *
34
+	 * @return Frequency
35
+	 */
36
+	public function clear()
37
+	{
38
+		$this->frequencies = array();
39
+		$this->percent = array();
40
+		parent::clear();
41 41
 
42
-        return $this;
43
-    }
42
+		return $this;
43
+	}
44 44
 
45
-    /**
46
-     * Определяет частоту появления слов.
47
-     *
48
-     * @return array
49
-     */
50
-    public function getFrequency()
51
-    {
52
-        if (empty($this->frequencies) && $this->getText()->count()) {
53
-            foreach ($this->getText() as $word) {
54
-                if (!isset($this->frequencies[$word->getPlain()])) {
55
-                    $this->frequencies[$word->getPlain()] = 0;
56
-                }
57
-                ++$this->frequencies[$word->getPlain()];
58
-            }
59
-            arsort($this->frequencies);
60
-        }
45
+	/**
46
+	 * Определяет частоту появления слов.
47
+	 *
48
+	 * @return array
49
+	 */
50
+	public function getFrequency()
51
+	{
52
+		if (empty($this->frequencies) && $this->getText()->count()) {
53
+			foreach ($this->getText() as $word) {
54
+				if (!isset($this->frequencies[$word->getPlain()])) {
55
+					$this->frequencies[$word->getPlain()] = 0;
56
+				}
57
+				++$this->frequencies[$word->getPlain()];
58
+			}
59
+			arsort($this->frequencies);
60
+		}
61 61
 
62
-        return $this->frequencies;
63
-    }
62
+		return $this->frequencies;
63
+	}
64 64
 
65
-    /**
66
-     * Получение проуентное отнашение частоты слов из списка частот слов.
67
-     *
68
-     * @return array
69
-     */
70
-    public function getPercent()
71
-    {
72
-        if (empty($this->percent) && ($frequencies = $this->getFrequency())) {
73
-            $ratio = max($frequencies) / 100;
74
-            foreach ($frequencies as $word => $frequency) {
75
-                $this->percent[$word] = $frequency / $ratio;
76
-            }
77
-        }
65
+	/**
66
+	 * Получение проуентное отнашение частоты слов из списка частот слов.
67
+	 *
68
+	 * @return array
69
+	 */
70
+	public function getPercent()
71
+	{
72
+		if (empty($this->percent) && ($frequencies = $this->getFrequency())) {
73
+			$ratio = max($frequencies) / 100;
74
+			foreach ($frequencies as $word => $frequency) {
75
+				$this->percent[$word] = $frequency / $ratio;
76
+			}
77
+		}
78 78
 
79
-        return $this->percent;
80
-    }
79
+		return $this->percent;
80
+	}
81 81
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -70,9 +70,9 @@
 block discarded – undo
70 70
     public function getPercent()
71 71
     {
72 72
         if (empty($this->percent) && ($frequencies = $this->getFrequency())) {
73
-            $ratio = max($frequencies) / 100;
73
+            $ratio = max($frequencies)/100;
74 74
             foreach ($frequencies as $word => $frequency) {
75
-                $this->percent[$word] = $frequency / $ratio;
75
+                $this->percent[$word] = $frequency/$ratio;
76 76
             }
77 77
         }
78 78
 
Please login to merge, or discard this patch.
AnalyzerText/Filter/WordList/WordList.php 2 patches
Indentation   +155 added lines, -155 removed lines patch added patch discarded remove patch
@@ -20,159 +20,159 @@
 block discarded – undo
20 20
  */
21 21
 abstract class WordList extends Filter
22 22
 {
23
-    /**
24
-     * Простые слова.
25
-     *
26
-     * @var array
27
-     */
28
-    private $simple = array();
29
-
30
-    /**
31
-     * Составные слова.
32
-     *
33
-     * Составные слова о части которого нам известно.
34
-     * Например слово пишется через тирэ
35
-     *
36
-     * @var array
37
-     */
38
-    private $composite = array();
39
-
40
-    /**
41
-     * Последовательности из набора слов.
42
-     *
43
-     * @var array
44
-     */
45
-    private $sequence = array();
46
-
47
-    /**
48
-     * @param Text $iterator Текст
49
-     */
50
-    public function __construct(Text $iterator)
51
-    {
52
-        parent::__construct($iterator);
53
-        $this->repackWordList();
54
-    }
55
-
56
-    /**
57
-     * Проверяет, является ли текущее слово допустимым
58
-     *
59
-     * @return bool
60
-     */
61
-    public function accept()
62
-    {
63
-        $word = $this->current();
64
-
65
-        return $this->isSequence($word) || $this->isSimple($word) || $this->isComposite($word);
66
-    }
67
-
68
-    /**
69
-     * Это последовательность.
70
-     *
71
-     * @param Word $word Слово
72
-     *
73
-     * @return bool
74
-     */
75
-    public function isSequence(Word $word)
76
-    {
77
-        $plain = $word->getPlain();
78
-        foreach ($this->sequence as $sequence) {
79
-            if ($sequence[0] == $plain) {
80
-                $sequence_length = count($sequence);
81
-                for ($i = 1; $i < $sequence_length; ++$i) {
82
-                    if (!($word = $this->getNextWord($i)) || $word->getPlain() != $sequence[$i]) {
83
-                        return false;
84
-                    }
85
-                }
86
-                // удаляем слова из последовательности
87
-                $key = $this->getText()->key();
88
-                for ($i = 1; $i < $sequence_length; ++$i) {
89
-                    $this->getText()->seek($key + $i);
90
-                    $this->getText()->remove();
91
-                }
92
-                $this->getText()->seek($key);
93
-
94
-                return true;
95
-            }
96
-        }
97
-
98
-        return false;
99
-    }
100
-
101
-    /**
102
-     * Это простое слово.
103
-     *
104
-     * @param Word $word Слово
105
-     *
106
-     * @return bool
107
-     */
108
-    public function isSimple(Word $word)
109
-    {
110
-        return in_array($word->getPlain(), $this->simple);
111
-    }
112
-
113
-    /**
114
-     * Это составное слово.
115
-     *
116
-     * @param Word $word Слово
117
-     *
118
-     * @return bool
119
-     */
120
-    public function isComposite(Word $word)
121
-    {
122
-        foreach ($this->composite as $reg) {
123
-            if (preg_match($reg, $word->getWord())) {
124
-                return true;
125
-            }
126
-        }
127
-
128
-        return false;
129
-    }
130
-
131
-    /**
132
-     * Возвращает список слов.
133
-     *
134
-     * Возвращает список слов которые необходимо удалить или оставить
135
-     * Если слово составное и пишестся через тире, но одна из частей может менятся например:
136
-     * <code>
137
-     *   подай-ка, налей-ка, молоко-то сбежало, наценка-с
138
-     * </code>
139
-     * то нужно писать шаблон вида:
140
-     * <code>
141
-     *   [ '*-ка', '*-то', '*-с' ]
142
-     * </code>
143
-     * Для удаления последовательности слов ячейка слова должна представляться в виде набора слов разделенных пробелом
144
-     * <code>
145
-     *   [ 'вовсе не', 'несмотря на то что' ]
146
-     * </code>
147
-     * Так же есть возможность указывать регулярные выражения для отлавливания сложных конструкций
148
-     * <code>
149
-     *   // ААааа Аааа-а-а
150
-     *   [ '/^а+(\-а+)*$/ui' ]
151
-     * </code>
152
-     * В регулярное выражение передается оригинальное слово, а не урощенная форма
153
-     *
154
-     * @return array
155
-     */
156
-    abstract public function getWords();
157
-
158
-    /**
159
-     * Разбор набора шаблонов слов и составление условий поиска соответствий.
160
-     */
161
-    private function repackWordList()
162
-    {
163
-        $words = $this->getWords();
164
-        // разбор на категории
165
-        foreach ($words as $word) {
166
-            if ($word[0] == '/') { // регулярное выражение
167
-                $this->composite[] = $word;
168
-            } elseif (strpos($word, ' ') !== false) { // последовательность
169
-                $this->sequence[] = explode(' ', $word);
170
-            } elseif (strpos($word, '*') !== false) { // псевдо регулярка
171
-                // из записи *-то делаем регулярное выражение вида: /^.+?\-то$/ui
172
-                $this->composite[] = '/^'.str_replace('\*', '.+?', preg_quote($word, '/')).'$/ui';
173
-            } else { // простое слово
174
-                $this->simple[] = $word;
175
-            }
176
-        }
177
-    }
23
+	/**
24
+	 * Простые слова.
25
+	 *
26
+	 * @var array
27
+	 */
28
+	private $simple = array();
29
+
30
+	/**
31
+	 * Составные слова.
32
+	 *
33
+	 * Составные слова о части которого нам известно.
34
+	 * Например слово пишется через тирэ
35
+	 *
36
+	 * @var array
37
+	 */
38
+	private $composite = array();
39
+
40
+	/**
41
+	 * Последовательности из набора слов.
42
+	 *
43
+	 * @var array
44
+	 */
45
+	private $sequence = array();
46
+
47
+	/**
48
+	 * @param Text $iterator Текст
49
+	 */
50
+	public function __construct(Text $iterator)
51
+	{
52
+		parent::__construct($iterator);
53
+		$this->repackWordList();
54
+	}
55
+
56
+	/**
57
+	 * Проверяет, является ли текущее слово допустимым
58
+	 *
59
+	 * @return bool
60
+	 */
61
+	public function accept()
62
+	{
63
+		$word = $this->current();
64
+
65
+		return $this->isSequence($word) || $this->isSimple($word) || $this->isComposite($word);
66
+	}
67
+
68
+	/**
69
+	 * Это последовательность.
70
+	 *
71
+	 * @param Word $word Слово
72
+	 *
73
+	 * @return bool
74
+	 */
75
+	public function isSequence(Word $word)
76
+	{
77
+		$plain = $word->getPlain();
78
+		foreach ($this->sequence as $sequence) {
79
+			if ($sequence[0] == $plain) {
80
+				$sequence_length = count($sequence);
81
+				for ($i = 1; $i < $sequence_length; ++$i) {
82
+					if (!($word = $this->getNextWord($i)) || $word->getPlain() != $sequence[$i]) {
83
+						return false;
84
+					}
85
+				}
86
+				// удаляем слова из последовательности
87
+				$key = $this->getText()->key();
88
+				for ($i = 1; $i < $sequence_length; ++$i) {
89
+					$this->getText()->seek($key + $i);
90
+					$this->getText()->remove();
91
+				}
92
+				$this->getText()->seek($key);
93
+
94
+				return true;
95
+			}
96
+		}
97
+
98
+		return false;
99
+	}
100
+
101
+	/**
102
+	 * Это простое слово.
103
+	 *
104
+	 * @param Word $word Слово
105
+	 *
106
+	 * @return bool
107
+	 */
108
+	public function isSimple(Word $word)
109
+	{
110
+		return in_array($word->getPlain(), $this->simple);
111
+	}
112
+
113
+	/**
114
+	 * Это составное слово.
115
+	 *
116
+	 * @param Word $word Слово
117
+	 *
118
+	 * @return bool
119
+	 */
120
+	public function isComposite(Word $word)
121
+	{
122
+		foreach ($this->composite as $reg) {
123
+			if (preg_match($reg, $word->getWord())) {
124
+				return true;
125
+			}
126
+		}
127
+
128
+		return false;
129
+	}
130
+
131
+	/**
132
+	 * Возвращает список слов.
133
+	 *
134
+	 * Возвращает список слов которые необходимо удалить или оставить
135
+	 * Если слово составное и пишестся через тире, но одна из частей может менятся например:
136
+	 * <code>
137
+	 *   подай-ка, налей-ка, молоко-то сбежало, наценка-с
138
+	 * </code>
139
+	 * то нужно писать шаблон вида:
140
+	 * <code>
141
+	 *   [ '*-ка', '*-то', '*-с' ]
142
+	 * </code>
143
+	 * Для удаления последовательности слов ячейка слова должна представляться в виде набора слов разделенных пробелом
144
+	 * <code>
145
+	 *   [ 'вовсе не', 'несмотря на то что' ]
146
+	 * </code>
147
+	 * Так же есть возможность указывать регулярные выражения для отлавливания сложных конструкций
148
+	 * <code>
149
+	 *   // ААааа Аааа-а-а
150
+	 *   [ '/^а+(\-а+)*$/ui' ]
151
+	 * </code>
152
+	 * В регулярное выражение передается оригинальное слово, а не урощенная форма
153
+	 *
154
+	 * @return array
155
+	 */
156
+	abstract public function getWords();
157
+
158
+	/**
159
+	 * Разбор набора шаблонов слов и составление условий поиска соответствий.
160
+	 */
161
+	private function repackWordList()
162
+	{
163
+		$words = $this->getWords();
164
+		// разбор на категории
165
+		foreach ($words as $word) {
166
+			if ($word[0] == '/') { // регулярное выражение
167
+				$this->composite[] = $word;
168
+			} elseif (strpos($word, ' ') !== false) { // последовательность
169
+				$this->sequence[] = explode(' ', $word);
170
+			} elseif (strpos($word, '*') !== false) { // псевдо регулярка
171
+				// из записи *-то делаем регулярное выражение вида: /^.+?\-то$/ui
172
+				$this->composite[] = '/^'.str_replace('\*', '.+?', preg_quote($word, '/')).'$/ui';
173
+			} else { // простое слово
174
+				$this->simple[] = $word;
175
+			}
176
+		}
177
+	}
178 178
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -86,7 +86,7 @@
 block discarded – undo
86 86
                 // удаляем слова из последовательности
87 87
                 $key = $this->getText()->key();
88 88
                 for ($i = 1; $i < $sequence_length; ++$i) {
89
-                    $this->getText()->seek($key + $i);
89
+                    $this->getText()->seek($key+$i);
90 90
                     $this->getText()->remove();
91 91
                 }
92 92
                 $this->getText()->seek($key);
Please login to merge, or discard this patch.