From eb3307da4e53097da52997e276c08b188ed40960 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Thu, 15 Oct 2020 17:41:13 -0700 Subject: Fix handling of xdata in bibtex/biblatex bibliographies. Closes #6752. --- src/Text/Pandoc/Citeproc/BibTeX.hs | 4 ++-- test/command/6752.md | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 test/command/6752.md diff --git a/src/Text/Pandoc/Citeproc/BibTeX.hs b/src/Text/Pandoc/Citeproc/BibTeX.hs index 4828115b6..b24ad0319 100644 --- a/src/Text/Pandoc/Citeproc/BibTeX.hs +++ b/src/Text/Pandoc/Citeproc/BibTeX.hs @@ -61,7 +61,8 @@ readBibtexString :: Variant -- ^ bibtex or biblatex readBibtexString variant locale idpred contents = do case runParser (((resolveCrossRefs variant <$> bibEntries) <* eof) >>= mapM (itemToReference locale variant) . - filter (idpred . identifier)) + filter (\item -> idpred (identifier item) && + entryType item /= "xdata")) (fromMaybe defaultLang $ localeLanguage locale, Map.empty) "" contents of Left err -> Left err @@ -1058,7 +1059,6 @@ getTypeAndGenre :: Bib (Text, Maybe Text) getTypeAndGenre = do lang <- gets localeLang et <- asks entryType - guard $ et /= "xdata" reftype' <- resolveKey' lang <$> getRawField "type" <|> return mempty st <- getRawField "entrysubtype" <|> return mempty diff --git a/test/command/6752.md b/test/command/6752.md new file mode 100644 index 000000000..b2d51d2ca --- /dev/null +++ b/test/command/6752.md @@ -0,0 +1,36 @@ +``` +% pandoc -f biblatex -t csljson +@xdata{XDPubAlfredAKnopf, +    publisher   = {Alfred A.~Knopf}, +    address     = {New York, NY} +} +@book{Klinkenborg2012, +    author      = {Verlyn Klinkenborg}, +    title       = {Several short sentences about writing}, +    date        = {2012}, +    xdata       = {XDPubAlfredAKnopf}, +} +^D +[ + { + "author": [ + { + "family": "Klinkenborg", + "given": "Verlyn" + } + ], + "id": "Klinkenborg2012", + "issued": { + "date-parts": [ + [ + 2012 + ] + ] + }, + "publisher": "Alfred A. Knopf", + "publisher-place": "New York, NY", + "title": "Several short sentences about writing", + "type": "book" + } +] +``` -- cgit v1.2.3