File Coverage

blib/lib/Lingua/EL/Poly2Mono.pm
Criterion Covered Total %
statement 40 51 78.4
branch 25 34 73.5
condition 40 93 43.0
subroutine 4 4 100.0
pod 0 1 0.0
total 109 183 59.5


line stmt bran cond sub pod time code
1             package Lingua::EL::Poly2Mono;
2             require Exporter;
3              
4 1     1   2184 use strict; # :-(
  1         2  
  1         62  
5              
6 1         2063 use vars qw/
7             $VERSION
8             @ISA
9             @EXPORT_OK
10             $OLD_PERL
11            
12             $C
13             $conson
14             $psiliaccent_lc
15             $gramma
16             $diacr
17             $ui
18             $diphpre
19             $accent
20             %remove
21             %p2m
22             %direm
23 1     1   6 /;
  1         2  
24              
25             $VERSION = 0.02;
26             @ISA = 'Exporter';
27             # @ISNTA = 'Deporter';
28             @EXPORT_OK = 'poly2mono';
29              
30             {
31             local $@ ;
32             eval { require Encode; Encode->import(qw/is_utf8 encode_utf8 decode_utf8/) };
33             $@ and ++$OLD_PERL;
34             }
35              
36             $C = '(?:[\x00-\x7f]|[\xc0-\xff][\x80-\xbf]+)';
37             $conson = "Β|Γ|Δ|Ζ|Θ|Κ|Λ|Μ|Ν|Ξ|Π|Ρ|Σ|Τ|Φ|Χ|Ψ|β|γ|δ|ζ|θ|κ|λ|μ|ν|ξ|π|ρ|ς|σ|τ|φ|χ|ψ|ῤ|ῥ|Ῥ";
38             $psiliaccent_lc="ἂ|ἄ|ἆ|ἒ|ἔ|ἢ|ἤ|ἦ|ἲ|ἴ|ἶ|ὂ|ὄ|ὒ|ὔ|ὖ|ὢ|ὤ|ὦ|ᾂ|ᾄ|ᾆ|ᾒ|ᾔ|ᾖ|ᾢ|ᾤ|ᾦ";
39             $gramma = "(Ά|Έ|Ή|Ί|Ό|Ύ|Ώ|ΐ|Α|Β|Γ|Δ|Ε|Ζ|Η|Θ|Ι|Κ|Λ|Μ|Ν|Ξ|Ο|Π|Ρ|Σ|Τ|Υ|Φ|Χ|Ψ|Ω|Ϊ|Ϋ|ά|έ|ή|ί|ΰ|α|β|γ|δ|ε|ζ|η|θ|ι|κ|λ|μ|ν|ξ|ο|π|ρ|ς|σ|τ|υ|φ|χ|ψ|ω|ϊ|ϋ|ό|ύ|ώ|ἀ|ἁ|ἂ|ἃ|ἄ|ἅ|ἆ|ἇ|Ἀ|Ἁ|Ἂ|Ἃ|Ἄ|Ἅ|Ἆ|Ἇ|ἐ|ἑ|ἒ|ἓ|ἔ|ἕ|Ἐ|Ἑ|Ἒ|Ἓ|Ἔ|Ἕ|ἠ|ἡ|ἢ|ἣ|ἤ|ἥ|ἦ|ἧ|Ἠ|Ἡ|Ἢ|Ἣ|Ἤ|Ἥ|Ἦ|Ἧ|ἰ|ἱ|ἲ|ἳ|ἴ|ἵ|ἶ|ἷ|Ἰ|Ἱ|Ἲ|Ἳ|Ἴ|Ἵ|Ἶ|Ἷ|ὀ|ὁ|ὂ|ὃ|ὄ|ὅ|Ὀ|Ὁ|Ὂ|Ὃ|Ὄ|Ὅ|ὐ|ὑ|ὒ|ὓ|ὔ|ὕ|ὖ|ὗ|Ὑ|Ὓ|Ὕ|Ὗ|ὠ|ὡ|ὢ|ὣ|ὤ|ὥ|ὦ|ὧ|Ὠ|Ὡ|Ὢ|Ὣ|Ὤ|Ὥ|Ὦ|Ὧ|ὰ|ά|ὲ|έ|ὴ|ή|ὶ|ί|ὸ|ό|ὺ|ύ|ὼ|ώ|ᾀ|ᾁ|ᾂ|ᾃ|ᾄ|ᾅ|ᾆ|ᾇ|ᾈ|ᾉ|ᾊ|ᾋ|ᾌ|ᾍ|ᾎ|ᾏ|ᾐ|ᾑ|ᾒ|ᾓ|ᾔ|ᾕ|ᾖ|ᾗ|ᾘ|ᾙ|ᾚ|ᾛ|ᾜ|ᾝ|ᾞ|ᾟ|ᾠ|ᾡ|ᾢ|ᾣ|ᾤ|ᾥ|ᾦ|ᾧ|ᾨ|ᾩ|ᾪ|ᾫ|ᾬ|ᾭ|ᾮ|ᾯ|ᾲ|ᾳ|ᾴ|ᾶ|ᾷ|Ὰ|Ά|ᾼ|ῂ|ῃ|ῄ|ῆ|ῇ|Ὲ|Έ|Ὴ|Ή|ῌ|ῒ|ΐ|ῖ|ῗ|ῢ|ΰ|ῤ|ῥ|ῦ|ῧ|Ὺ|Ύ|Ῥ|ῲ|ῳ|ῴ|ῶ|ῷ|Ὸ|Ό|Ὼ|Ώ|ῼ)";
40             $diacr="ϊ|ϋ|ἀ|ἁ|ἂ|ἃ|ἄ|ἅ|ἆ|ἇ|Ἀ|Ἁ|Ἂ|Ἃ|Ἄ|Ἅ|Ἆ|Ἇ|ἐ|ἑ|ἒ|ἓ|ἔ|ἕ|Ἐ|Ἑ|Ἒ|Ἓ|Ἔ|Ἕ|ἠ|ἡ|ἢ|ἣ|ἤ|ἥ|ἦ|ἧ|Ἠ|Ἡ|Ἢ|Ἣ|Ἤ|Ἥ|Ἦ|Ἧ|ἰ|ἱ|ἲ|ἳ|ἴ|ἵ|ἶ|ἷ|Ἰ|Ἱ|Ἲ|Ἳ|Ἴ|Ἵ|Ἶ|Ἷ|ὀ|ὁ|ὂ|ὃ|ὄ|ὅ|Ὀ|Ὁ|Ὂ|Ὃ|Ὄ|Ὅ|ὐ|ὑ|ὒ|ὓ|ὔ|ὕ|ὖ|ὗ|Ὑ|Ὓ|Ὕ|Ὗ|ὠ|ὡ|ὢ|ὣ|ὤ|ὥ|ὦ|ὧ|Ὠ|Ὡ|Ὢ|Ὣ|Ὤ|Ὥ|Ὦ|Ὧ|ὰ|ά|ὲ|έ|ὴ|ή|ὶ|ί|ὸ|ό|ὺ|ύ|ὼ|ώ|ᾀ|ᾁ|ᾂ|ᾃ|ᾄ|ᾅ|ᾆ|ᾇ|ᾈ|ᾉ|ᾊ|ᾋ|ᾌ|ᾍ|ᾎ|ᾏ|ᾐ|ᾑ|ᾒ|ᾓ|ᾔ|ᾕ|ᾖ|ᾗ|ᾘ|ᾙ|ᾚ|ᾛ|ᾜ|ᾝ|ᾞ|ᾟ|ᾠ|ᾡ|ᾢ|ᾣ|ᾤ|ᾥ|ᾦ|ᾧ|ᾨ|ᾩ|ᾪ|ᾫ|ᾬ|ᾭ|ᾮ|ᾯ|ᾲ|ᾳ|ᾴ|ᾶ|ᾷ|Ὰ|Ά|ᾼ|ῂ|ῃ|ῄ|ῆ|ῇ|Ὲ|Έ|Ὴ|Ή|ῌ|ῒ|ΐ|ῖ|ῗ|ῢ|ΰ|ῤ|ῥ|ῦ|ῧ|Ὺ|Ύ|Ῥ|ῲ|ῳ|ῴ|ῶ|ῷ|Ὸ|Ό|Ὼ|Ώ|ῼ";
41             $ui="ἰ|ἱ|ἲ|ἳ|ἴ|ἵ|ἶ|ἷ|ὐ|ὑ|ὒ|ὓ|ὔ|ὕ|ὖ|ὗ|ὶ|ί|ὺ|ύ|ῖ|ῦ";
42             $diphpre="Α|Ε|Η|Ο|Υ|α|ε|η|ο|υ";
43             $accent="ἂ|ἃ|ἄ|ἅ|ἆ|ἇ|Ἂ|Ἃ|Ἄ|Ἅ|Ἆ|Ἇ|ἒ|ἓ|ἔ|ἕ|Ἒ|Ἓ|Ἔ|Ἕ|ἢ|ἣ|ἤ|ἥ|ἦ|ἧ|Ἢ|Ἣ|Ἤ|Ἥ|Ἦ|Ἧ|ἲ|ἳ|ἴ|ἵ|ἶ|ἷ|Ἲ|Ἳ|Ἴ|Ἵ|Ἶ|Ἷ|ὂ|ὃ|ὄ|ὅ|Ὂ|Ὃ|Ὄ|Ὅ|ὒ|ὓ|ὔ|ὕ|ὖ|ὗ|Ὓ|Ὕ|Ὗ|ὢ|ὣ|ὤ|ὥ|ὦ|ὧ|Ὢ|Ὣ|Ὤ|Ὥ|Ὦ|Ὧ|ὰ|ά|ὲ|έ|ὴ|ή|ὶ|ί|ὸ|ό|ὺ|ύ|ὼ|ώ|ᾂ|ᾃ|ᾄ|ᾅ|ᾆ|ᾇᾊ|ᾋ|ᾌ|ᾍ|ᾎ|ᾏ|ᾒ|ᾓ|ᾔ|ᾕ|ᾖ|ᾗ|ᾚ|ᾛ|ᾜ|ᾝ|ᾞ|ᾟ|ᾢ|ᾣ|ᾤ|ᾥ|ᾦ|ᾧ|ᾪ|ᾫ|ᾬ|ᾭ|ᾮ|ᾯ|ᾲ|ᾴ|ᾶ|ᾷ|Ὰ|Ά|ῂ|ῄ|ῆ|ῇ|Ὲ|Έ|Ὴ|Ή|ῒ|ΐ|ῖ|ῗ|ῢ|ΰ|ῦ|ῧ|Ὺ|Ύ|ῲ|ῴ|ῶ|ῷ|Ὸ|Ό|Ὼ|Ώ";
44              
45             # This is for removing koronides with accents, secondary accents at the
46             # end of a word, and diereses preceded by accents.
47             %remove =
48             qw(ϊ ι
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             %p2m=qw{ἀ α
265             ἁ α
266             ἂ ά
267             ἃ ά
268             ἄ ά
269             ἅ ά
270             ἆ ά
271             ἇ ά
272             Ἀ Α
273             Ἁ Α
274             Ἂ Ά
275             Ἃ Ά
276             Ἄ Ά
277             Ἅ Ά
278             Ἆ Ά
279             Ἇ Ά
280             ἐ ε
281             ἑ ε
282             ἒ έ
283             ἓ έ
284             ἔ έ
285             ἕ έ
286             Ἐ Ε
287             Ἑ Ε
288             Ἒ Έ
289             Ἓ Έ
290             Ἔ Έ
291             Ἕ Έ
292             ἠ η
293             ἡ η
294             ἢ ή
295             ἣ ή
296             ἤ ή
297             ἥ ή
298             ἦ ή
299             ἧ ή
300             Ἠ Η
301             Ἡ Η
302             Ἢ Ή
303             Ἣ Ή
304             Ἤ Ή
305             Ἥ Ή
306             Ἦ Ή
307             Ἧ Ή
308             ἰ ι
309             ἱ ι
310             ἲ ί
311             ἳ ί
312             ἴ ί
313             ἵ ί
314             ἶ ί
315             ἷ ί
316             Ἰ Ι
317             Ἱ Ι
318             Ἲ Ί
319             Ἳ Ί
320             Ἴ Ί
321             Ἵ Ί
322             Ἶ Ί
323             Ἷ Ί
324             ὀ ο
325             ὁ ο
326             ὂ ό
327             ὃ ό
328             ὄ ό
329             ὅ ό
330             Ὀ Ο
331             Ὁ Ο
332             Ὂ Ό
333             Ὃ Ό
334             Ὄ Ό
335             Ὅ Ό
336             ὐ υ
337             ὑ υ
338             ὒ ύ
339             ὓ ύ
340             ὔ ύ
341             ὕ ύ
342             ὖ ύ
343             ὗ ύ
344             Ὑ Υ
345             Ὓ Υ
346             Ὕ Ύ
347             Ὗ Ύ
348             ὠ ω
349             ὡ ω
350             ὢ ώ
351             ὣ ώ
352             ὤ ώ
353             ὥ ώ
354             ὦ ώ
355             ὧ ώ
356             Ὠ Ω
357             Ὡ Ω
358             Ὢ Ώ
359             Ὣ Ώ
360             Ὤ Ώ
361             Ὥ Ώ
362             Ὦ Ώ
363             Ὧ Ώ
364             ὰ ά
365             ά ά
366             ὲ έ
367             έ έ
368             ὴ ή
369             ή ή
370             ὶ ί
371             ί ί
372             ὸ ό
373             ό ό
374             ὺ ύ
375             ύ ύ
376             ὼ ώ
377             ώ ώ
378             ᾀ α
379             ᾁ α
380             ᾂ ά
381             ᾃ ά
382             ᾄ ά
383             ᾅ ά
384             ᾆ ά
385             ᾇ ά
386             ᾈ Α
387             ᾉ Α
388             ᾊ Ά
389             ᾋ Ά
390             ᾌ Ά
391             ᾍ Ά
392             ᾎ Ά
393             ᾏ Ά
394             ᾐ η
395             ᾑ η
396             ᾒ ή
397             ᾓ ή
398             ᾔ ή
399             ᾕ ή
400             ᾖ ή
401             ᾗ ή
402             ᾘ Η
403             ᾙ Η
404             ᾚ Ή
405             ᾛ Ή
406             ᾜ Ή
407             ᾝ Ή
408             ᾞ Ή
409             ᾟ Ή
410             ᾠ ω
411             ᾡ ω
412             ᾢ ώ
413             ᾣ ώ
414             ᾤ ώ
415             ᾥ ώ
416             ᾦ ώ
417             ᾧ ώ
418             ᾨ Ω
419             ᾩ Ω
420             ᾪ Ώ
421             ᾫ Ώ
422             ᾬ Ώ
423             ᾭ Ώ
424             ᾮ Ώ
425             ᾯ Ώ
426             ᾲ ά
427             ᾳ α
428             ᾴ ά
429             ᾶ ά
430             ᾷ ά
431             Ὰ Ά
432             Ά Ά
433             ᾼ Α
434             ῂ ή
435             ῃ η
436             ῄ ή
437             ῆ ή
438             ῇ ή
439             Ὲ Έ
440             Έ Έ
441             Ὴ Ή
442             Ή Ή
443             ῌ Η
444             ῒ ΐ
445             ΐ ΐ
446             ῖ ί
447             ῗ ΐ
448             ῢ ΰ
449             ΰ ΰ
450             ῤ ρ
451             ῥ ρ
452             ῦ ύ
453             ῧ ΰ
454             Ὺ Ύ
455             Ύ Ύ
456             Ῥ Ρ
457             ῲ ώ
458             ῳ ω
459             ῴ ώ
460             ῶ ώ
461             ῷ ώ
462             Ὸ Ό
463             Ό Ό
464             Ὼ Ώ
465             Ώ Ώ
466             ῼ Ω
467             ᾽ ’
468             ᾿ ’
469             ´ ʹ};
470             %direm = #dieresis removal
471             qw{ϊ ι
472             ϋ υ
473             ΐ ί
474             ΰ ύ
475             ῒ ί
476             ῢ ύ
477             ῗ ί
478             ῧ ύ};
479              
480             sub poly2mono {
481 2 100 66 2 0 561 if ($OLD_PERL or ! is_utf8($_[0])) {
482 1         6 goto &_poly2mono;
483             } else {
484 1         6 decode_utf8(_poly2mono(encode_utf8($_[0]))); # Yes, I know this is inefficient. I might rewrite _poly2mono some day.
485             }
486             }
487              
488              
489             sub _poly2mono { # the guts
490 2     2   11 my($orig) = $_[0];
491 2         3 my($newstring,$thischar);
492 0         0 my($fsyl,$fphon,$lsyl,$prevvowel); # first syllable, first phoneme, last syllable, previous vowel
493 0         0 my(@lexis);
494 2         49 while($orig =~ s/$C//) {
495 58         113 $thischar = $&;
496 58 100 33     835 if ($thischar =~ /^$diacr$/) {
  48         189  
497             # current pos
498 10 100 66     165 my($cpos) = $thischar =~ /^$ui$/ && @lexis
499             &&
500             $lexis[$#lexis] =~ /^$diphpre$/
501             ? $#lexis-1
502             : $#lexis;
503 10         25 $fphon=$prevvowel='';
504 10         16 $fsyl=$lsyl=1;
505 10 50 33     862 if ($lexis[$#lexis] !~ /^$gramma$/ or !scalar @lexis or $cpos<$#lexis && 2>scalar @lexis) {
      66        
      33        
506 0         0 $fphon=1;
507             } else{
508 10         24 foreach (reverse 0..$cpos){
509 14 100 66     2169 if ($lexis[$_] =~ /^$gramma$/ &&
    50          
510             $lexis[$_] !~ /^$conson$/){
511 4         9 $prevvowel=$lexis[$_];
512 4         5 $fsyl='';last;
  4         10  
513             } elsif ($lexis[$_] !~ /^$gramma$/){
514 0         0 last;
515             }
516             }
517             }
518 10         76 my($nnn)=0;
519 10         11 my($lll);
520 10         443 for(;$orig =~ /$C {$nnn}($C)/x;++$nnn){
521 20         43 $lll = $1;
522 20 100 100     2280 if($1 =~ /^$gramma$/ &&
    100          
523             $lll !~ /^$conson$/){
524 8         10 $lsyl='';last;
  8         21  
525             }elsif($lll !~ /^$gramma$/){
526 2         6 last;
527             }
528             }
529            
530             #print "$thischar ", $fphon && "fphon ", $fsyl && "fsyl ", $lsyl && 'lsyl ', "prevvowel: $prevvowel
";
531            
532 10 100 66     668 if ($thischar =~ /^$psiliaccent_lc$/ && !$fphon &&
    50 33        
    50 66        
    50 33        
    50 33        
    50 33        
    50 33        
    50 33        
      33        
      66        
      33        
      33        
      33        
      66        
      33        
      33        
      33        
      33        
      33        
      33        
533             (!$fsyl or !$lsyl)) {
534 2   33     12 $newstring .=($remove{$thischar} ||
535             $thischar) . ' ΄';
536              
537             # Accentuation exceptions are dealt with here:
538             }elsif ($thischar eq 'ῦ' and
539             join('',@lexis) =~ /^(?:Π|π)ο$/ and
540             $orig !~ /^$gramma/){
541 0         0 $newstring .= 'ύ';
542             }
543             elsif ($thischar eq 'ῶ' and
544             join('',@lexis) =~ /Π|π$/ and
545             $orig =~ /^ς(?!$gramma)/) {
546 0         0 $newstring .= 'ώ';
547             }
548             elsif ($thischar =~ /^(?:ἢ|ἤ)/ and
549             !@lexis and
550             $orig =~ /^(?!$gramma)/) {
551 0         0 $newstring .= 'ή';
552             }
553             elsif ($thischar =~ /^(?:ὰ|ά)/ and
554             join('',@lexis) =~ /(?:Γ|γ|Π|π)ι$/ and
555             $orig =~ /^(?!$gramma)/) {
556 0         0 $newstring .= 'α';
557             }
558             elsif ($thischar =~ /^(?:ὸ|ό)/ and
559             join('',@lexis) =~ /(?:Π|π)ι$/ and
560             $orig =~ /^(?!$gramma)/) {
561 0         0 $newstring .= 'ο';
562             }
563              
564             elsif (($fsyl and $lsyl) or ($prevvowel =~
565             /$accent/)){
566 0   0     0 $newstring .= $remove{$thischar} ||
567             $thischar;
568 8         146 }elsif ($thischar =~ /${\join '|', keys %direm}/ && $lexis[$#lexis] !~ /^$diphpre$/ or $thischar =~ /ϊ|ΐ|ῒ|ῗ|Ϊ/ && $lexis[$#lexis] !~ /Α|Ε|Ο|Υ|α|ε|ο|υ/ or $thischar =~ /ϋ|ΰ|ῢ|ῧ|Ϋ/ && $lexis[$#lexis] !~ /Α|Ε|Η|Ο|α|ε|η|ο/){
569 0         0 $newstring .= $direm{$thischar};
570             } else {
571 8   33     65 $newstring .= $p2m{$thischar}||$thischar
572             }
573             }
574             else {$newstring .= $p2m{$thischar} || $thischar}
575 58 100       1187 if ($thischar =~ /^$gramma$/) {
576 50         335 push @lexis, $thischar;
577 8         48 } else { @lexis = ();}
578             }
579 2         17 return $newstring;
580             }
581              
582             1;
583              
584             __END__