Moved special handling of punctuation in suffix out of markdown reader.

This allows different writers to handle punctuation in the suffix
differently.
This commit is contained in:
Nathan Gass 2010-12-13 21:33:08 +01:00 committed by John MacFarlane
parent c2d3796439
commit 2e728df756
2 changed files with 8 additions and 9 deletions

View file

@ -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

View file

@ -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 $