aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/Citeproc/BibTeX.hs4
-rw-r--r--test/command/6752.md36
2 files changed, 38 insertions, 2 deletions
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"
+ }
+]
+```