From 2e728df7569853fdd3b496c70654b0a8eae7f1ec Mon Sep 17 00:00:00 2001 From: Nathan Gass Date: Mon, 13 Dec 2010 21:33:08 +0100 Subject: Moved special handling of punctuation in suffix out of markdown reader. This allows different writers to handle punctuation in the suffix differently. --- src/Text/Pandoc/Biblio.hs | 8 ++++++-- src/Text/Pandoc/Readers/Markdown.hs | 9 ++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/Text/Pandoc/Biblio.hs b/src/Text/Pandoc/Biblio.hs index 0241b2d6d..a6c87fcbc 100644 --- a/src/Text/Pandoc/Biblio.hs +++ b/src/Text/Pandoc/Biblio.hs @@ -31,7 +31,7 @@ module Text.Pandoc.Biblio ( processBiblio ) where import Data.List import Data.Unique -import Data.Char ( isDigit ) +import Data.Char ( isDigit, isPunctuation ) import qualified Data.Map as M import Text.CSL hiding ( Cite(..), Citation(..) ) import qualified Text.CSL as CSL ( Cite(..) ) @@ -164,9 +164,13 @@ toCslCite c AuthorInText -> (True, False) SuppressAuthor -> (False,True ) NormalCitation -> (False,False) + s' = case s of + [] -> [] + (Str (y:_) : _) | isPunctuation y -> s + _ -> Str "," : Space : s in emptyCite { CSL.citeId = citationId c , CSL.citePrefix = PandocText $ citationPrefix c - , CSL.citeSuffix = PandocText $ s + , CSL.citeSuffix = PandocText $ s' , CSL.citeLabel = la , CSL.citeLocator = lo , CSL.citeNoteNumber = show $ citationNoteNum c diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 5994f2ef8..51c61103b 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -32,7 +32,7 @@ module Text.Pandoc.Readers.Markdown ( readMarkdown ) where import Data.List ( transpose, isSuffixOf, sortBy, findIndex, intercalate ) import qualified Data.Map as M import Data.Ord ( comparing ) -import Data.Char ( isAlphaNum, isPunctuation ) +import Data.Char ( isAlphaNum ) import Data.Maybe import Text.Pandoc.Definition import Text.Pandoc.Shared @@ -1291,12 +1291,7 @@ citeKey = try $ do suffix :: GenParser Char ParserState [Inline] suffix = try $ do spnl - res <- many $ notFollowedBy (oneOf ";]") >> inline - return $ case res of - [] -> [] - (Str (y:_) : _) | isPunctuation y - -> res - _ -> Str "," : Space : res + liftM normalizeSpaces $ many $ notFollowedBy (oneOf ";]") >> inline prefix :: GenParser Char ParserState [Inline] prefix = liftM normalizeSpaces $ -- cgit v1.2.3