Пример #1
0
    def test_align(self):
        bib_database = BibDatabase()
        bib_database.entries = [{
            'ID': 'abc123',
            'ENTRYTYPE': 'book',
            'author': 'test',
            'thisisaverylongkey': 'longvalue',
        }]
        writer = BibTexWriter()
        writer.align_values = True
        result = bibdeskparser.dumps(bib_database, writer)
        expected = """@book{abc123,
 author             = {test},
 thisisaverylongkey = {longvalue}
}

"""
        self.assertEqual(result, expected)

        with open(
                'tests/data/multiple_entries_and_comments.bib') as bibtex_file:
            bib_database = bibdeskparser.load(bibtex_file)
        writer = BibTexWriter()
        writer.contents = ['entries']
        writer.align_values = True
        result = bibdeskparser.dumps(bib_database, writer)
        expected = """@book{Toto3000,
 author    = {Toto, A and Titi, B},
 title     = {A title}
}

@article{Wigner1938,
 author    = {Wigner, E.},
 doi       = {10.1039/TF9383400029},
 issn      = {0014-7672},
 journal   = {Trans. Faraday Soc.},
 owner     = {fr},
 pages     = {29--41},
 publisher = {The Royal Society of Chemistry},
 title     = {The transition state method},
 volume    = {34},
 year      = {1938}
}

@book{Yablon2005,
 author    = {Yablon, A.D.},
 publisher = {Springer},
 title     = {Optical fiber fusion slicing},
 year      = {2005}
}

"""
        self.assertEqual(result, expected)
Пример #2
0
 def test_multiple_string_write(self):
     bib_database = BibDatabase()
     bib_database.strings['name1'] = 'value1'
     bib_database.strings['name2'] = 'value2'  # Order is important!
     result = bibdeskparser.dumps(bib_database)
     expected = '@string{name1 = {value1}}\n\n@string{name2 = {value2}}\n\n'
     self.assertEqual(result, expected)
Пример #3
0
    def test_content_entries_only(self):
        with open(
                'tests/data/multiple_entries_and_comments.bib') as bibtex_file:
            bib_database = bibdeskparser.load(bibtex_file)
        writer = BibTexWriter()
        writer.contents = ['entries']
        result = bibdeskparser.dumps(bib_database, writer)
        expected = """@book{Toto3000,
 author = {Toto, A and Titi, B},
 title = {A title}
}

@article{Wigner1938,
 author = {Wigner, E.},
 doi = {10.1039/TF9383400029},
 issn = {0014-7672},
 journal = {Trans. Faraday Soc.},
 owner = {fr},
 pages = {29--41},
 publisher = {The Royal Society of Chemistry},
 title = {The transition state method},
 volume = {34},
 year = {1938}
}

@book{Yablon2005,
 author = {Yablon, A.D.},
 publisher = {Springer},
 title = {Optical fiber fusion slicing},
 year = {2005}
}

"""
        self.assertEqual(result, expected)
Пример #4
0
 def test_write_common_strings(self):
     bib_database = BibDatabase()
     bib_database.load_common_strings()
     writer = BibTexWriter(write_common_strings=True)
     result = bibdeskparser.dumps(bib_database, writer=writer)
     with io.open('tests/data/common_strings.bib') as f:
         expected = f.read()
     self.assertEqual(result, expected)
Пример #5
0
 def test_write_dependent_strings(self):
     bib_database = BibDatabase()
     bib_database.strings['title'] = 'Mr'
     expr = BibDataStringExpression(
         [BibDataString(bib_database, 'title'), 'Smith']
     )
     bib_database.strings['name'] = expr
     result = bibdeskparser.dumps(bib_database)
     expected = (
         '@string{title = {Mr}}\n\n@string{name = title # {Smith}}\n\n'
     )
     self.assertEqual(result, expected)
Пример #6
0
    def test_content_comment_only(self):
        with open(
                'tests/data/multiple_entries_and_comments.bib') as bibtex_file:
            bib_database = bibdeskparser.load(bibtex_file)
        writer = BibTexWriter()
        writer.contents = ['comments']
        result = bibdeskparser.dumps(bib_database, writer)
        expected = """@comment{}

@comment{A comment}

"""
        self.assertEqual(result, expected)
Пример #7
0
    def test_entry_separator(self):
        bib_database = BibDatabase()
        bib_database.entries = [{
            'ID': 'abc123',
            'ENTRYTYPE': 'book',
            'author': 'test'
        }]
        writer = BibTexWriter()
        writer.entry_separator = ''
        result = bibdeskparser.dumps(bib_database, writer)
        expected = """@book{abc123,
 author = {test}
}
"""
        self.assertEqual(result, expected)
Пример #8
0
 def test_sort_missing_field(self):
     bib_database = BibDatabase()
     bib_database.entries = [
         {
             'ID': 'b',
             'ENTRYTYPE': 'article',
             'year': '2000'
         },
         {
             'ID': 'c',
             'ENTRYTYPE': 'book',
             'year': '2010'
         },
         {
             'ID': 'a',
             'ENTRYTYPE': 'book'
         },
     ]
     writer = BibTexWriter()
     writer.order_entries_by = ('year', )
     result = bibdeskparser.dumps(bib_database, writer)
     expected = "@book{a\n}\n\n@article{b,\n year = {2000}\n}\n\n@book{c,\n year = {2010}\n}\n\n"
     self.assertEqual(result, expected)
Пример #9
0
 def test_single_string_write(self):
     bib_database = BibDatabase()
     bib_database.strings['name1'] = 'value1'
     result = bibdeskparser.dumps(bib_database)
     expected = '@string{name1 = {value1}}\n\n'
     self.assertEqual(result, expected)
Пример #10
0
 def test_multiple_string_write(self):
     bib_database = BibDatabase()
     bib_database.preambles = [' a ', 'b']
     result = bibdeskparser.dumps(bib_database)
     expected = '@preamble{" a "}\n\n@preamble{"b"}\n\n'
     self.assertEqual(result, expected)
Пример #11
0
 def test_sort_type_id(self):
     writer = BibTexWriter()
     writer.order_entries_by = ('ENTRYTYPE', 'ID')
     result = bibdeskparser.dumps(self.bib_database, writer)
     expected = "@article{b\n}\n\n@book{a\n}\n\n@book{c\n}\n\n"
     self.assertEqual(result, expected)
Пример #12
0
 def test_sort_none(self):
     writer = BibTexWriter()
     writer.order_entries_by = None
     result = bibdeskparser.dumps(self.bib_database, writer)
     expected = "@article{b\n}\n\n@book{c\n}\n\n@book{a\n}\n\n"
     self.assertEqual(result, expected)
Пример #13
0
 def test_sort_default(self):
     result = bibdeskparser.dumps(self.bib_database)
     expected = "@book{a\n}\n\n@article{b\n}\n\n@book{c\n}\n\n"
     self.assertEqual(result, expected)
Пример #14
0
 def test_write_str(self):
     with open(self.input_file_path) as bibtex_file:
         bibtex_database = bibdeskparser.load(bibtex_file)
     result = bibdeskparser.dumps(bibtex_database)
     self.assertEqual(result, self.expected)
Пример #15
0
 def test_ignore_common_strings(self):
     bib_database = BibDatabase()
     bib_database.load_common_strings()
     result = bibdeskparser.dumps(bib_database)
     self.assertEqual(result, '')
Пример #16
0
 def test_ignore_common_strings_only_if_not_overloaded(self):
     bib_database = BibDatabase()
     bib_database.load_common_strings()
     bib_database.strings['jan'] = 'Janvier'
     result = bibdeskparser.dumps(bib_database)
     self.assertEqual(result, '@string{jan = {Janvier}}\n\n')
Пример #17
0
 def test_single_preamble_write(self):
     bib_database = BibDatabase()
     bib_database.preambles = [' a ']
     result = bibdeskparser.dumps(bib_database)
     expected = '@preamble{" a "}\n\n'
     self.assertEqual(result, expected)