Improve info display for biblatex databases

If an entry does not have a year field, check for a date field
(the common type in biblatex databases) and extract the year(s).

Candidate for branch.
This commit is contained in:
Juergen Spitzmueller 2016-09-18 10:33:33 +02:00
parent 7d4292918e
commit ba17193067

View File

@ -316,8 +316,26 @@ docstring const BibTeXInfo::getAbbreviatedAuthor(
docstring const BibTeXInfo::getYear() const docstring const BibTeXInfo::getYear() const
{ {
if (is_bibtex_) if (is_bibtex_) {
return operator[]("year"); // first try legacy year field
docstring year = operator[]("year");
if (!year.empty())
return year;
// now try biblatex's date field
year = operator[]("date");
// Format is [-]YYYY-MM-DD*/[-]YYYY-MM-DD*
// We only want the years.
static regex const yreg("[-]?([\\d]{4}).*");
static regex const ereg(".*/([\\d]{4}).*");
smatch sm;
string const date = to_utf8(year);
regex_match(date, sm, yreg);
year = from_ascii(sm[1]);
// check for an endyear
if (regex_match(date, sm, ereg))
year += char_type(0x2013) + from_ascii(sm[1]);
return year;
}
docstring const opt = label(); docstring const opt = label();
if (opt.empty()) if (opt.empty())