@@ -25,12 +25,8 @@ import Text.Pandoc.Class.PandocMonad (PandocMonad)
2525import Text.Pandoc.Definition
2626import Text.Pandoc.Builder as B
2727import Text.Pandoc.Options
28−import Text.Pandoc.Walk (walkM)
29−import Text.Pandoc.Shared (uniqueIdent)
3028import Text.Pandoc.Error
3129import Control.Monad.Except
32−import Control.Monad.State
33−import qualified Data.Set as Set
3430import Data.Functor.Identity (runIdentity)
3531
3632-- | Parse a CommonMark formatted string into a 'Pandoc' structure.
@@ -40,10 +36,7 @@ readCommonMark opts s = do
4036 commonmarkWith (foldr (<>) defaultSyntaxSpec exts) "input" s
4137 case res of
4238 Left err -> throwError $ PandocParsecError s err
43− Right (Cm bls :: Cm () Blocks) -> return $
44− (if isEnabled Ext_auto_identifiers opts
45− then addHeaderIdentifiers opts
46− else id) $ B.doc bls
39+ Right (Cm bls :: Cm () Blocks) -> return $ B.doc bls
4740 where
4841 exts = [ hardLineBreaksSpec | isEnabled Ext_hard_line_breaks opts ] ++
4942 [ smartPunctuationSpec | isEnabled Ext_smart opts ] ++
@@ -52,28 +45,20 @@ readCommonMark opts s = do
5245 [ subscriptSpec | isEnabled Ext_subscript opts ] ++
5346 [ mathSpec | isEnabled Ext_tex_math_dollars opts ] ++
5447 [ fancyListSpec | isEnabled Ext_fancy_lists opts ] ++
55− [ implicitHeadingReferencesSpec
56− | isEnabled Ext_implicit_header_references opts ] ++
57− [ fencedDivSpec | isEnabled Ext_fenced_code_attributes opts ] ++
48+ [ fencedDivSpec | isEnabled Ext_fenced_divs opts ] ++
5849 [ bracketedSpanSpec | isEnabled Ext_bracketed_spans opts ] ++
5950 [ rawAttributeSpec | isEnabled Ext_raw_attribute opts ] ++
6051 [ attributesSpec | isEnabled Ext_link_attributes opts ||
61− isEnabled Ext_inline_code_attributes opts ] ++
52+ isEnabled Ext_inline_code_attributes opts ||
53+ isEnabled Ext_fenced_code_attributes opts ] ++
6254 [ pipeTableSpec | isEnabled Ext_pipe_tables opts ] ++
6355 [ autolinkSpec | isEnabled Ext_autolink_bare_uris opts ] ++
6456 [ emojiSpec | isEnabled Ext_emoji opts ] ++
57+ [ autoIdentifiersSpec
58+ | isEnabled Ext_gfm_auto_identifiers opts ] ++
59+ [ implicitHeadingReferencesSpec
60+ | isEnabled Ext_implicit_header_references opts ] ++
6561 [ footnoteSpec | isEnabled Ext_footnotes opts ] ++
6662 [ definitionListSpec | isEnabled Ext_definition_lists opts ] ++
6763 [ taskListSpec | isEnabled Ext_task_lists opts ]
6864
69−addHeaderIdentifiers :: ReaderOptions -> Pandoc -> Pandoc
70−addHeaderIdentifiers opts d =
71− evalState (walkM (addHeaderId opts) d) mempty
72−
73−addHeaderId :: ReaderOptions -> Block -> State (Set.Set Text) Block
74−addHeaderId opts (Header lev (_,classes,kvs) ils) = do
75− ids <- get
76− let ident = uniqueIdent (readerExtensions opts) ils ids
77− modify (Set.insert ident)
78− return $ Header lev (ident,classes,kvs) ils
79−addHeaderId _ x = return x