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.List
import Data.Unique import Data.Unique
import Data.Char ( isDigit ) import Data.Char ( isDigit, isPunctuation )
import qualified Data.Map as M import qualified Data.Map as M
import Text.CSL hiding ( Cite(..), Citation(..) ) import Text.CSL hiding ( Cite(..), Citation(..) )
import qualified Text.CSL as CSL ( Cite(..) ) import qualified Text.CSL as CSL ( Cite(..) )
@ -164,9 +164,13 @@ toCslCite c
AuthorInText -> (True, False) AuthorInText -> (True, False)
SuppressAuthor -> (False,True ) SuppressAuthor -> (False,True )
NormalCitation -> (False,False) NormalCitation -> (False,False)
s' = case s of
[] -> []
(Str (y:_) : _) | isPunctuation y -> s
_ -> Str "," : Space : s
in emptyCite { CSL.citeId = citationId c in emptyCite { CSL.citeId = citationId c
, CSL.citePrefix = PandocText $ citationPrefix c , CSL.citePrefix = PandocText $ citationPrefix c
, CSL.citeSuffix = PandocText $ s , CSL.citeSuffix = PandocText $ s'
, CSL.citeLabel = la , CSL.citeLabel = la
, CSL.citeLocator = lo , CSL.citeLocator = lo
, CSL.citeNoteNumber = show $ citationNoteNum c , 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 Data.List ( transpose, isSuffixOf, sortBy, findIndex, intercalate )
import qualified Data.Map as M import qualified Data.Map as M
import Data.Ord ( comparing ) import Data.Ord ( comparing )
import Data.Char ( isAlphaNum, isPunctuation ) import Data.Char ( isAlphaNum )
import Data.Maybe import Data.Maybe
import Text.Pandoc.Definition import Text.Pandoc.Definition
import Text.Pandoc.Shared import Text.Pandoc.Shared
@ -1291,12 +1291,7 @@ citeKey = try $ do
suffix :: GenParser Char ParserState [Inline] suffix :: GenParser Char ParserState [Inline]
suffix = try $ do suffix = try $ do
spnl spnl
res <- many $ notFollowedBy (oneOf ";]") >> inline liftM normalizeSpaces $ many $ notFollowedBy (oneOf ";]") >> inline
return $ case res of
[] -> []
(Str (y:_) : _) | isPunctuation y
-> res
_ -> Str "," : Space : res
prefix :: GenParser Char ParserState [Inline] prefix :: GenParser Char ParserState [Inline]
prefix = liftM normalizeSpaces $ prefix = liftM normalizeSpaces $