diff options
author | John MacFarlane <jgm@berkeley.edu> | 2017-03-12 22:03:10 +0100 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2017-03-12 22:07:28 +0100 |
commit | 2f8f8f0da64388fa01d83fccf3cf1f2899c64269 (patch) | |
tree | 163b99c64a5ccffc7c419a5d7d686995959aea9f /src/Text/Pandoc/Readers/MediaWiki.hs | |
parent | c8b906256dccc7b0572c1707dee9b211c86e996d (diff) |
Issue warning for duplicate header identifiers.
As noted in the previous commit, an autogenerated identifier
may still coincide with an explicit identifier that is given
for a header later in the document, or with an identifier on
a div, span, link, or image. This commit adds a warning
in this case, so users can supply an explicit identifier.
* Added `DuplicateIdentifier` to LogMessage.
* Modified HTML, Org, MediaWiki readers so their custom
state type is an instance of HasLogMessages. This is necessary
for `registerHeader` to issue warnings.
See #1745.
Diffstat (limited to 'src/Text/Pandoc/Readers/MediaWiki.hs')
-rw-r--r-- | src/Text/Pandoc/Readers/MediaWiki.hs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Readers/MediaWiki.hs b/src/Text/Pandoc/Readers/MediaWiki.hs index fa20ade07..b35f39aad 100644 --- a/src/Text/Pandoc/Readers/MediaWiki.hs +++ b/src/Text/Pandoc/Readers/MediaWiki.hs @@ -73,6 +73,7 @@ readMediaWiki opts s = do , mwCategoryLinks = [] , mwHeaderMap = M.empty , mwIdentifierList = Set.empty + , mwLogMessages = [] } (s ++ "\n") case parsed of @@ -85,6 +86,7 @@ data MWState = MWState { mwOptions :: ReaderOptions , mwCategoryLinks :: [Inlines] , mwHeaderMap :: M.Map Inlines String , mwIdentifierList :: Set.Set String + , mwLogMessages :: [LogMessage] } type MWParser m = ParserT [Char] MWState m @@ -100,6 +102,10 @@ instance HasIdentifierList MWState where extractIdentifierList = mwIdentifierList updateIdentifierList f st = st{ mwIdentifierList = f $ mwIdentifierList st } +instance HasLogMessages MWState where + addLogMessage m s = s{ mwLogMessages = m : mwLogMessages s } + getLogMessages = reverse . mwLogMessages + -- -- auxiliary functions -- @@ -187,6 +193,7 @@ parseMediaWiki = do let categories = if null categoryLinks then mempty else B.para $ mconcat $ intersperse B.space categoryLinks + reportLogMessages return $ B.doc $ bs <> categories -- |