Fix collision of entry type key with valid field name 'type'.

Fixes #252.
main
Olivier Mangin 4 years ago
parent dc2bc9c0e5
commit c363e13cbf
No known key found for this signature in database
GPG Key ID: D72FEC1C3120A884

@ -7,7 +7,7 @@ from .p3 import ustr, uchr
# Citekey stuff
TYPE_KEY = 'type'
TYPE_KEY = 'ENTRYTYPE'
CONTROL_CHARS = ''.join(map(uchr, list(range(0, 32)) + list(range(127, 160))))
CITEKEY_FORBIDDEN_CHARS = '@\'\\,#}{~%/ ' # '/' is OK for bibtex but forbidden

@ -57,6 +57,12 @@ class TestEnDecode(unittest.TestCase):
self.assertEqual(bibraw1, bibraw2)
def test_decode_bibtex_preserves_type_field(self):
"""Test that multiple encode/decode step preserve data"""
decoder = endecoder.EnDecoder()
entry = decoder.decode_bibdata(bibtex_raw0)
self.assertEqual(entry['Page99']['type'], "technical report")
def test_endecode_bibtex_BOM(self):
"""Test that bibtexparser if fine with BOM-prefixed data"""
decoder = endecoder.EnDecoder()
@ -179,6 +185,14 @@ class TestEnDecode(unittest.TestCase):
with self.assertRaises(decoder.BibDecodingError):
decoder.decode_bibdata("@misc{I am not a correct bibtex{{}")
def test_endecode_preserves_type(self):
decoder = endecoder.EnDecoder()
entry = decoder.decode_bibdata(bibtex_raw0)
bibraw1 = decoder.encode_bibdata(
entry, ignore_fields=['title', 'note', 'abstract', 'journal'])
if __name__ == '__main__':
unittest.main()

Loading…
Cancel
Save