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:
parent
c2d3796439
commit
2e728df756
2 changed files with 8 additions and 9 deletions
|
@ -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
|
||||||
|
|
|
@ -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 $
|
||||||
|
|
Loading…
Add table
Reference in a new issue