Subversion Repositories navi

Rev

Rev 103 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 szabot 1
#!/usr/bin/python
2
# -*- coding: utf-8 -*-
3
 
4
import re
5
 
6
num = [u"kew",
7
       u"'aw",
8
       u"mune",
9
       u"pxey",
10
       u"tsìng",
11
       u"mrr",
12
       u"pukap",
13
       u"kinä"]
14
 
15
rem = [u"aw",
16
       u"mun",
17
       u"pey",
18
       u"sìng",
19
       u"mrr",
20
       u"fu",
21
       u"hin"]
22
 
23
base = [u"",
24
        u"me",
25
        u"pxe",
26
        u"tsì",
27
        u"mrr",
28
        u"pu",
29
        u"ki"]
30
 
31
 
32
numre = \
33
      u"^(?:(" + "|".join(base) + u")zazam??)?" + \
34
      u"(?:(" + "|".join(base) + u")vozam??)?" + \
35
      u"(?:(" + "|".join(base) + u")zam??)?" + \
36
      u"(?:(" + "|".join(base) + u")vo(?:l(?=a|))?)?" + \
37
      u"((?:" + "|".join(rem) + u")|" + \
38
      u"(?:" + "|".join(num) + u"))?$"
39
numre = re.compile(numre)
40
 
41
def parse(numin):
42
    if type(numin) != unicode:
43
        return None
44
    if numin == u"":
45
        return None
46
    numin = numin.replace(u"í",u"ì").replace(u"á",u"ä")
47
    try:
48
        mat = numre.match(numin).groups()
49
    except:
50
        return None
51
    numout = 0
52
    numoct = 0
53
    try:
54
        numout += rem.index(mat[4]) + 1
55
        numoct += rem.index(mat[4]) + 1
56
    except:
57
        try:
58
            numout += num.index(mat[4])
59
            numoct += num.index(mat[4])
60
        except: pass
61
    try:
62
        numout += (base.index(mat[3]) + 1) * 8
63
        numoct += (base.index(mat[3]) + 1) * 10
64
    except: pass
65
    try:
66
        numout += (base.index(mat[2]) + 1) * 8**2
67
        numoct += (base.index(mat[2]) + 1) * 10**2
68
    except: pass
69
    try:
70
        numout += (base.index(mat[1]) + 1) * 8**3
71
        numoct += (base.index(mat[1]) + 1) * 10**3
72
    except: pass
73
    try:
74
        numout += (base.index(mat[0]) + 1) * 8**4
75
        numoct += (base.index(mat[0]) + 1) * 10**4
76
    except: pass
77
    return numout, numoct
78
 
79
 
80
if __name__ == "__main__":
81
    print parse(u"mrrvolaw")