1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 from Pyblio.Format import join, one, all, I, switch, BR, B, Span
21 from Pyblio.Format.Misc import plural
22 from Pyblio.Format.Date import year
23 from Pyblio.Format.Person import firstLast
24
25 from Pyblio.Cite.Style.Base import Alpha
26
28 """ Generate keys based on authors and year. """
29
31 rec = self.db[uid]
32 if not ('date' in rec or 'author' in rec):
33 return 'Unknown'
34
35 k = []
36 if 'author' in rec:
37 au = rec['author']
38 if len(au) == 1:
39 k.append(au[0].last[:3])
40 else:
41 k.append(''.join([a.last[0] for a in au[:3]]))
42
43 if 'date' in rec:
44 k.append(str(rec['date'][0].year)[-2:])
45
46 return ''.join(k)
47
48
49
51 return plural(people,
52 one = join ('') [ people ],
53 two = join (' and ') [ people ],
54 more = join (', ', last = ', and ') [ people ])
55
56
57
58 plain_author = Chicago(firstLast(all('author')))
59
60 plain_journal = join(', ')[
61 I[one('journal')],
62 join('')[join(':')[one('volume'), one('number')],
63 '(' + one('pages') + ')'],
64 year(one('date'))
65 ]
66
67 plain_place = switch('doctype')
68 plain_place = plain_place.case(article=plain_journal)
69 plain_place = plain_place.default(year(one('date')))
70
71 plain = join('. ')[plain_author, one('title'), plain_place] + '.'
72
73
74 full = join('\n')[Span(size='large', weight='bold')[one('title')],
75 Span(size='large')[plain_author],
76 Span(size='large')[plain_place],
77 Span(color='#505050')[one('abstract')]]
78