mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 19:25:39 +00:00
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:
parent
7d4292918e
commit
ba17193067
@ -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())
|
||||||
|
Loading…
Reference in New Issue
Block a user