modified parser
[meabook] / parser.py
1 #!/usr/bin/python -tt
2 # vim: sw=4 ts=4 expandtab ai
3
4
5
6
7
8 import sys
9 import os
10 import re
11 import base64 
12
13
14
15 from database import db  
16
17
18 def read_file(file_name):
19     try:
20         file = open(file_name)
21     except IOError:
22         return None
23     result = {}
24     dbo = db.DbSqlite()
25     dbo.clear_data()
26     flag_last_string = True
27
28     for line in file:
29         # Check end of person 
30         if line == "\n":
31             dbo.ins_record(result)
32             # unset result
33             result = {}
34             continue
35         # Check uuencode long string
36         if flag_last_string == False:
37             if re.search("^ .*=$", line):
38                 value = value + line
39                 continue
40             else:
41                 value = base64.b64decode(value)
42                 key, value = key.strip(), value.strip()
43                 try:
44                     result[key].append(value)
45                 except KeyError:
46                     result[key]  = [value]
47                 flag_last_string = True
48                        
49         key, value = line.split(':', 1)
50         #Look up uuecode string
51         if (re.search("^: ", value)):
52             flag_last_string = False
53             continue
54
55         key, value = key.strip(), value.strip()
56         try:
57             result[key].append(value)
58         except KeyError:
59             result[key]  = [value]
60     return result
61
62 def main(argv):
63     """ Main """
64
65     result=read_file("test/test.ldiff")
66
67 if __name__ == "__main__":
68     sys.exit(main(sys.argv))