diff --git a/pubs/endecoder.py b/pubs/endecoder.py index d7f450d..2fb13d7 100644 --- a/pubs/endecoder.py +++ b/pubs/endecoder.py @@ -71,6 +71,8 @@ class EnDecoder(object): return ', '.join(link['url'] for link in value) elif key == 'author': return ' and '.join(author for author in value) + elif key == 'editor': + return ' and '.join(editor['name'] for editor in value) elif key == 'journal': return value['name'] else: diff --git a/tests/str_fixtures.py b/tests/str_fixtures.py index 7274e51..b227ea6 100644 --- a/tests/str_fixtures.py +++ b/tests/str_fixtures.py @@ -40,6 +40,7 @@ turing_bib = """@article{turing1950computing, title={Computing machinery and intelligence}, author={Turing, Alan M}, journal={Mind}, + editor={Edward A. Feigenbaum and Julian Feldman}, volume={59}, number={236}, pages={433--460}, diff --git a/tests/test_endecoder.py b/tests/test_endecoder.py index c003563..d2a1e14 100644 --- a/tests/test_endecoder.py +++ b/tests/test_endecoder.py @@ -6,7 +6,7 @@ import yaml import dotdot from pubs import endecoder -from str_fixtures import bibtex_raw0, metadata_raw0 +from str_fixtures import bibtex_raw0, metadata_raw0, turing_bib def compare_yaml_str(s1, s2): if s1 == s2: @@ -37,6 +37,23 @@ class TestEnDecode(unittest.TestCase): self.assertEqual(bibraw1, bibraw2) + def test_endecode_bibtex_editor(self): + decoder = endecoder.EnDecoder() + entry = decoder.decode_bibdata(turing_bib) + + bibraw1 = decoder.encode_bibdata(entry) + entry1 = decoder.decode_bibdata(bibraw1) + bibraw2 = decoder.encode_bibdata(entry1) + entry2 = decoder.decode_bibdata(bibraw2) + + for citekey in entry1.keys(): + bibentry1 = entry1[citekey] + bibentry2 = entry2[citekey] + for key, value in bibentry1.items(): + self.assertEqual(bibentry1[key], bibentry2[key]) + + self.assertEqual(bibraw1, bibraw2) + def test_endecode_metadata(self): decoder = endecoder.EnDecoder()