git.iko.soy/typeable/pandoc
on master help sign in
Markdown reader: Warn about duplicate note references.
5d9fc46John MacFarlane
src/Text/Pandoc/Readers/Markdown.hs+6−1
@@ -317,6 +317,7 @@ rawLines = do
317
317
318noteBlock :: MarkdownParser (F Blocks)
318noteBlock :: MarkdownParser (F Blocks)
319noteBlock = try $ do
319noteBlock = try $ do
320+ pos <- getPosition
320 skipNonindentSpaces
321 skipNonindentSpaces
321 ref <- noteMarker
322 ref <- noteMarker
322 char ':'
323 char ':'
@@ -328,7 +329,11 @@ noteBlock = try $ do
328 optional blanklines
329 optional blanklines
329 parsed <- parseFromString parseBlocks raw
330 parsed <- parseFromString parseBlocks raw
330 let newnote = (ref, parsed)
331 let newnote = (ref, parsed)
332+ oldnotes <- stateNotes' <$> getState
333+ case lookup ref oldnotes of
334+ Just _ -> addWarning (Just pos) $ "Duplicate note reference `" ++ ref ++ "'"
335+ Nothing -> return ()
331− updateState $ \s -> s { stateNotes' = newnote : stateNotes' s }
336+ updateState $ \s -> s { stateNotes' = newnote : oldnotes }
332 return mempty
337 return mempty
333
338
334--
339--