fix pubkey generation for python2.7

main
Jonas Kulhanek 5 years ago
parent d073e60711
commit 837392a33a

@ -73,11 +73,8 @@ class CitekeyFormatter(Formatter):
return str2citekey(s.__format__(fmt)) return str2citekey(s.__format__(fmt))
def get_value(self, key, args, kwds): def get_value(self, key, args, entry):
if len(args) == 0: if isinstance(key, (str, unicode)):
raise ValueError('Must pass bibtex entry to the format method')
entry = args[0]
if isinstance(key, str):
okey = key okey = key
if key == 'author' and not 'author' in entry: if key == 'author' and not 'author' in entry:
key = 'editor' key = 'editor'
@ -94,6 +91,8 @@ class CitekeyFormatter(Formatter):
else: else:
raise ValueError( raise ValueError(
"No {} defined: cannot generate a citekey.".format(okey)) "No {} defined: cannot generate a citekey.".format(okey))
else:
raise ValueError('Key must be a str instance')
def generate_citekey(bibdata, format_string='{author_last_name}{year}'): def generate_citekey(bibdata, format_string='{author_last_name}{year}'):
""" Generate a citekey from bib_data. """ Generate a citekey from bib_data.
@ -101,7 +100,7 @@ def generate_citekey(bibdata, format_string='{author_last_name}{year}'):
:raise ValueError: if no author nor editor is defined. :raise ValueError: if no author nor editor is defined.
""" """
citekey, entry = get_entry(bibdata) citekey, entry = get_entry(bibdata)
citekey = CitekeyFormatter().format(format_string, entry) citekey = CitekeyFormatter().format(format_string, **entry)
return citekey return citekey

Loading…
Cancel
Save