-
Notifications
You must be signed in to change notification settings - Fork 0
/
controller.py
63 lines (46 loc) · 1.66 KB
/
controller.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
from adapter import Adapter
from setting import settings
import util
import sys, json, re
def bib_string(entry):
extra = '-%s' % entry['extra'] if entry['extra'] else ''
fline = '@%s{%s%s,' % (entry['papertype'], entry['key'], extra)
content = ',\n'.join([' %s = {%s}' % (field, entry[field])
for field in entry
if entry[field] and field in settings['bib_fields'] ])
lline = '}'
return '\n'.join([fline, content, lline])
class Controller:
def __init__(self):
self.adapter = Adapter()
def insert(self, entry):
self.adapter.insert(entry)
def get(self, key):
m = re.search('(\w+)-(\d+)', key)
if m:
key = m.groups()[0]
extra = int(m.groups()[1])
entry = self.adapter.get(key, extra)
return [entry] if entry else None
entries = self.adapter.getmany(key)
if not entries:
return None
if len(entries) is 1:
entries[0]['extra'] = None
return [entries[0]]
return entries
if __name__ == '__main__':
con = Controller()
keys = ['wanght2008', 'guptat2007',
'lencckn2010', 'guptat2007-1', 'guptat2007-11']
for key in keys:
entries = con.get(key)
if not entries:
print 'WARNING: no entries for %s--------------------' % key
continue
elif len(entries) > 1:
print 'WARNING: multiple entries for %s--------------' % key
else:
print '-------------------------------------------------------'
for x in entries:
print util.convert(bib_string(x))