def convert_mods_to_bib(mods): # Fix unrecognised genre 'journal article' mods = mods.replace('genre>journal article<', 'genre>article-journal<') # This would workaround book chapter being misunderstood # mods = mods.replace('>book chapter<', '>instruction<') mods = re.sub( r'<mods:namePart type="given">([^< ]*) ([^<]*)</mods:namePart>', r'<mods:namePart type="given">\1</mods:namePart>\n<mods:namePart type="given">\2</mods:namePart>', mods) # workaround bug in bibutils # https://github.com/jayvdb/patches/blob/master/bibutils-une.diff mods = mods.replace('mods:original', 'mods:series') bibs = convert(mods, 'xml', 'bib', encoding='utf8') # workaround bibutils emitting issue & number, # and citeproc-py only parsing number. if 'issue=' in bibs: bibs = re.sub('number=.*', '', bibs) bibs = bibs.replace('issue=', 'number=') return bibs.replace('\nand ', ' and ')
def test_mods(self): mods = convert(self.data, 'bib', 'mods') _save_file('taalman_database_mods.xml', mods) assert mods.startswith('<?xml version="1.0" encoding="UTF-8"?>') assert mods.endswith('</modsCollection>\n') assert '<modsCollection xmlns="http://www.loc.gov/mods/v3">' in mods assert '<mods ID="Ful83">' in mods assert '<identifier type="citekey">Ful83</identifier>' in mods assert 'MacPherson’s graph construction' in mods assert '<namePart type="family">Sertöz</namePart>' in mods
def test_mods_conference(self): mods = convert(self.data, 'bib', 'mods') bib = convert(mods, 'mods', 'bib') assert '@InProceedings{Ful83' not in bib