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/Org | |
parent | c8b906256dccc7b0572c1707dee9b211c86e996d (diff) | |
download | pandoc-2f8f8f0da64388fa01d83fccf3cf1f2899c64269.tar.gz |
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/Org')
-rw-r--r-- | src/Text/Pandoc/Readers/Org/ParserState.hs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Readers/Org/ParserState.hs b/src/Text/Pandoc/Readers/Org/ParserState.hs index 0bbe27991..6bed2a547 100644 --- a/src/Text/Pandoc/Readers/Org/ParserState.hs +++ b/src/Text/Pandoc/Readers/Org/ParserState.hs @@ -60,7 +60,9 @@ import qualified Data.Set as Set import Text.Pandoc.Builder (Blocks, Inlines, trimInlines) import Text.Pandoc.Definition (Meta (..), nullMeta) import Text.Pandoc.Options (ReaderOptions (..)) +import Text.Pandoc.Logging import Text.Pandoc.Parsing (HasHeaderMap (..), HasIdentifierList (..), + HasLogMessages (..), HasLastStrPosition (..), HasQuoteContext (..), HasReaderOptions (..), ParserContext (..), QuoteContext (..), SourcePos) @@ -104,6 +106,7 @@ data OrgParserState = OrgParserState , orgStateOptions :: ReaderOptions , orgStateParserContext :: ParserContext , orgStateTodoSequences :: [TodoSequence] + , orgLogMessages :: [LogMessage] } data OrgParserLocal = OrgParserLocal { orgLocalQuoteContext :: QuoteContext } @@ -130,6 +133,10 @@ instance HasHeaderMap OrgParserState where extractHeaderMap = orgStateHeaderMap updateHeaderMap f s = s{ orgStateHeaderMap = f (orgStateHeaderMap s) } +instance HasLogMessages OrgParserState where + addLogMessage msg st = st{ orgLogMessages = msg : orgLogMessages st } + getLogMessages st = reverse $ orgLogMessages st + instance Default OrgParserState where def = defaultOrgParserState @@ -150,6 +157,7 @@ defaultOrgParserState = OrgParserState , orgStateOptions = def , orgStateParserContext = NullState , orgStateTodoSequences = [] + , orgLogMessages = [] } optionsToParserState :: ReaderOptions -> OrgParserState |