Import
JabRef must import MARC21-XML bibliographic records
req~import.marc21-xml~1
JabRef supports importing MARC21 bibliographic records encoded as MARCXML and maps recognised fields according to the MARC 21 Format for Bibliographic Data and the DNB MARC21 export format.
An importer should prefer proper fulltext links (e.g. Volltext) for PDFs over other content links.
Needs: impl, utest
Importer must normalize imported BibTeX keyword delimiters
req~import.bibtex.keywords.normalize-delimiters~1
When importing BibTeX entries, JabRef applies the “Normalize keyword delimiters” cleanup (see req~save.keywords.normalize-delimiters~1) to every imported entry, so groups, search, and the keyword editor split the field on the library’s separator from the start. The library’s separator is the one declared in the library’s metadata; if none is declared, it is the accepted delimiter that the library’s keyword fields already use most; if the keyword fields contain no delimiter, it is the globally configured keyword separator. Keyword fields that already use the library’s separator are left untouched, so opening a library does not rewrite them.
Delimiter characters that are part of a keyword remain part of that keyword and are escaped when necessary.
Needs: impl, utest
Library must maintain imported entries sorted by internal id
req~import.entries.sorted-by-id~1
Entries are kept in the library in the order of their internal ids, regardless of the order in which a batch of imported entries arrives (e.g. after per-entry background duplicate checks). Looking up an entry’s position in the library therefore succeeds for every imported entry, so the main table can select and update it.
Needs: impl, utest
Importer must abort when unresolved merge conflict markers are detected
req~import.bibtex.merge-conflict-markers~1
A BibTeX file that still contains version control conflict markers is rejected with an error naming the line of the first marker, instead of importing an arbitrary side of the conflict or storing the markers inside an entry. A marker is a line starting with at least seven < or > characters. The ======= and ||||||| lines of a conflict are not looked for on their own: they always follow a <<<<<<< line, and such lines also occur as decorative rules in field values.
Needs: impl, utest
JabRef must report unreadable libraries and close temporary tab
req~import.library.unreadable-reported~1
When a library file cannot be read or parsed at all, JabRef names the file and the reason it failed, and leaves no open tab behind. A file that parses with warnings is not affected: it still opens, and its warnings are reported separately.
Rationale: Closing the tab prevents leaving an empty, untitled library that the user could accidentally save over the original file that failed to load.
Needs: impl, utest
Infer DOIs from other fields
req~import.doi-from-other-fields~1
If an entry’s doi field is empty and another field contains a DOI, JabRef makes a best-effort attempt to identify that DOI and store it in the doi field.
Needs: impl, utest