1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 """
24 To import data from vcard.
25
26 Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
27 GNU General Public License.
28 """
29
30 from etl.component import component
31
33
34 - def __init__(self,fileconnector, name='component.input.csv_in', transformer=None, row_limit=0):
35 """
36 Required Parameters
37 fileconnector : Local file connector to connect with file.
38
39 Extra Parameters
40 name : Name of Component.
41 """
42 super(vcard_in, self).__init__(name=name, connector=fileconnector, transformer=transformer, row_limit=row_limit)
43 self._type = 'component.input.vcard_in'
44
45
47 res = vcard_in(self.connector, self.name, self.transformer, self.row_limit)
48 return res
49
55
56
58 import vobject
59 self.fp = self.connector.open('r')
60 s = "".join(self.fp.readlines())
61 reader = vobject.readComponents(s)
62 while True:
63 row = {}
64 data = reader.next()
65 for d in data.contents:
66 row[unicode(d)] = eval('data.' + unicode(d) + '.value')
67 yield row, 'main'
68
70 from etl_test import etl_test
71 import etl
72 file_conn = etl.connector.localfile('../../../demo/input/input1.vcf')
73 test = etl_test.etl_component_test(vcard_in(file_conn, name='vcf test'))
74 test.check_output([{u'tel': u'(111) 555-1212', u'title': u'Shrimp Man', u'rev': u'20080424T195243Z', u'version': u'3.0', u'org': [u'BubbaGumpShrimp'], u'label': u'100 Waters Edge\\nBaytown, LA 30314\\nUnited States of America', u'email': u'forrestgump@example.com', u'fn': u'ForrestGump'}], 'main')
75 res = test.output()
76 print res
77
78 if __name__ == '__main__':
79 test()
80