diff options
author | Albert Krewinkel <albert@zeitkraut.de> | 2017-01-06 17:52:09 +0100 |
---|---|---|
committer | Albert Krewinkel <albert@zeitkraut.de> | 2017-01-06 18:22:19 +0100 |
commit | 4ca420e937471c568e6d14e8017e184d0959ae09 (patch) | |
tree | 56669a4801f7edc8745a6d5db903056aa108d472 | |
parent | 21e6ca197694a8f65bd2717dc441ea99f3f20312 (diff) | |
download | pandoc-4ca420e937471c568e6d14e8017e184d0959ae09.tar.gz |
Org reader: accept org-ref citations followed by commas
Bugfix for an issue which, whenever the citation was immediately followed by a
comma, prevented correct parsing of org-ref citations.
-rw-r--r-- | src/Text/Pandoc/Readers/Org/Inlines.hs | 31 | ||||
-rw-r--r-- | tests/Tests/Readers/Org.hs | 12 |
2 files changed, 28 insertions, 15 deletions
diff --git a/src/Text/Pandoc/Readers/Org/Inlines.hs b/src/Text/Pandoc/Readers/Org/Inlines.hs index 5f3df8d3e..56e3777c3 100644 --- a/src/Text/Pandoc/Readers/Org/Inlines.hs +++ b/src/Text/Pandoc/Readers/Org/Inlines.hs @@ -198,21 +198,22 @@ orgRefCite = try $ choice normalOrgRefCite :: OrgParser (F [Citation]) normalOrgRefCite = try $ do mode <- orgRefCiteMode - sequence <$> sepBy1 (orgRefCiteList mode) (char ',') - where - -- | A list of org-ref style citation keys, parsed as citation of the given - -- citation mode. - orgRefCiteList :: CitationMode -> OrgParser (F Citation) - orgRefCiteList citeMode = try $ do - key <- orgRefCiteKey - returnF $ Citation - { citationId = key - , citationPrefix = mempty - , citationSuffix = mempty - , citationMode = citeMode - , citationNoteNum = 0 - , citationHash = 0 - } + -- | org-ref style citation key, parsed into a citation of the given mode + let orgRefCiteItem :: OrgParser (F Citation) + orgRefCiteItem = try $ do + key <- orgRefCiteKey + returnF $ Citation + { citationId = key + , citationPrefix = mempty + , citationSuffix = mempty + , citationMode = mode + , citationNoteNum = 0 + , citationHash = 0 + } + firstCitation <- orgRefCiteItem + moreCitations <- many (try $ char ',' *> orgRefCiteItem) + return . sequence $ firstCitation : moreCitations + where -- | Read an Berkeley-style Org-mode citation. Berkeley citation style was -- develop and adjusted to Org-mode style by John MacFarlane and Richard diff --git a/tests/Tests/Readers/Org.hs b/tests/Tests/Readers/Org.hs index 4462d81cc..0518f6932 100644 --- a/tests/Tests/Readers/Org.hs +++ b/tests/Tests/Readers/Org.hs @@ -334,6 +334,18 @@ tests = } in (para $ cite [citation] "cite:pandoc") + , "Org-ref simple citation succeeded by comma" =: + "cite:pandoc," =?> + let citation = Citation + { citationId = "pandoc" + , citationPrefix = mempty + , citationSuffix = mempty + , citationMode = AuthorInText + , citationNoteNum = 0 + , citationHash = 0 + } + in (para $ cite [citation] "cite:pandoc" <> str ",") + , "Org-ref simple citep citation" =: "citep:pandoc" =?> let citation = Citation |