aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <[email protected]>2020-04-04 13:23:38 -0700
committerJohn MacFarlane <[email protected]>2020-05-14 09:00:35 -0700
commit106bd76648422d46f78cfb6f175b3bc271d444f7 (patch)
treed2a18fa300c16f05c6f0fa93103c5d5312816bd0
parent7923d53ca2b753d1174a043f9ad2c22c22647ee0 (diff)
Commonmark reader: Update commonmark-hs version and go back...
to using built-in auto identifiers.
-rw-r--r--src/Text/Pandoc/Extensions.hs12
-rw-r--r--src/Text/Pandoc/Readers/CommonMark.hs31
-rw-r--r--stack.yaml2
3 files changed, 21 insertions, 24 deletions
diff --git a/src/Text/Pandoc/Extensions.hs b/src/Text/Pandoc/Extensions.hs
index e33a59e37..c0e352910 100644
--- a/src/Text/Pandoc/Extensions.hs
+++ b/src/Text/Pandoc/Extensions.hs
@@ -438,6 +438,18 @@ getAllExtensions f = universalExtensions <> getAll f
, Ext_implicit_figures
, Ext_hard_line_breaks
, Ext_smart
+ , Ext_tex_math_dollars
+ , Ext_superscript
+ , Ext_subscript
+ , Ext_definition_lists
+ , Ext_footnotes
+ , Ext_fancy_lists
+ , Ext_fenced_divs
+ , Ext_bracketed_spans
+ , Ext_raw_attribute
+ , Ext_inline_code_attributes
+ , Ext_link_attributes
+ , Ext_implicit_header_references
]
getAll "commonmark" = getAll "gfm"
getAll "org" = autoIdExtensions <>
diff --git a/src/Text/Pandoc/Readers/CommonMark.hs b/src/Text/Pandoc/Readers/CommonMark.hs
index becf45be5..65c6a1e53 100644
--- a/src/Text/Pandoc/Readers/CommonMark.hs
+++ b/src/Text/Pandoc/Readers/CommonMark.hs
@@ -25,12 +25,8 @@ import Text.Pandoc.Class.PandocMonad (PandocMonad)
import Text.Pandoc.Definition
import Text.Pandoc.Builder as B
import Text.Pandoc.Options
-import Text.Pandoc.Walk (walkM)
-import Text.Pandoc.Shared (uniqueIdent)
import Text.Pandoc.Error
import Control.Monad.Except
-import Control.Monad.State
-import qualified Data.Set as Set
import Data.Functor.Identity (runIdentity)
-- | Parse a CommonMark formatted string into a 'Pandoc' structure.
@@ -40,10 +36,7 @@ readCommonMark opts s = do
commonmarkWith (foldr (<>) defaultSyntaxSpec exts) "input" s
case res of
Left err -> throwError $ PandocParsecError s err
- Right (Cm bls :: Cm () Blocks) -> return $
- (if isEnabled Ext_auto_identifiers opts
- then addHeaderIdentifiers opts
- else id) $ B.doc bls
+ Right (Cm bls :: Cm () Blocks) -> return $ B.doc bls
where
exts = [ hardLineBreaksSpec | isEnabled Ext_hard_line_breaks opts ] ++
[ smartPunctuationSpec | isEnabled Ext_smart opts ] ++
@@ -52,28 +45,20 @@ readCommonMark opts s = do
[ subscriptSpec | isEnabled Ext_subscript opts ] ++
[ mathSpec | isEnabled Ext_tex_math_dollars opts ] ++
[ fancyListSpec | isEnabled Ext_fancy_lists opts ] ++
- [ implicitHeadingReferencesSpec
- | isEnabled Ext_implicit_header_references opts ] ++
- [ fencedDivSpec | isEnabled Ext_fenced_code_attributes opts ] ++
+ [ fencedDivSpec | isEnabled Ext_fenced_divs opts ] ++
[ bracketedSpanSpec | isEnabled Ext_bracketed_spans opts ] ++
[ rawAttributeSpec | isEnabled Ext_raw_attribute opts ] ++
[ attributesSpec | isEnabled Ext_link_attributes opts ||
- isEnabled Ext_inline_code_attributes opts ] ++
+ isEnabled Ext_inline_code_attributes opts ||
+ isEnabled Ext_fenced_code_attributes opts ] ++
[ pipeTableSpec | isEnabled Ext_pipe_tables opts ] ++
[ autolinkSpec | isEnabled Ext_autolink_bare_uris opts ] ++
[ emojiSpec | isEnabled Ext_emoji opts ] ++
+ [ autoIdentifiersSpec
+ | isEnabled Ext_gfm_auto_identifiers opts ] ++
+ [ implicitHeadingReferencesSpec
+ | isEnabled Ext_implicit_header_references opts ] ++
[ footnoteSpec | isEnabled Ext_footnotes opts ] ++
[ definitionListSpec | isEnabled Ext_definition_lists opts ] ++
[ taskListSpec | isEnabled Ext_task_lists opts ]
-addHeaderIdentifiers :: ReaderOptions -> Pandoc -> Pandoc
-addHeaderIdentifiers opts d =
- evalState (walkM (addHeaderId opts) d) mempty
-
-addHeaderId :: ReaderOptions -> Block -> State (Set.Set Text) Block
-addHeaderId opts (Header lev (_,classes,kvs) ils) = do
- ids <- get
- let ident = uniqueIdent (readerExtensions opts) ils ids
- modify (Set.insert ident)
- return $ Header lev (ident,classes,kvs) ils
-addHeaderId _ x = return x
diff --git a/stack.yaml b/stack.yaml
index 953c1dba4..8391cf42a 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -31,7 +31,7 @@ extra-deps:
- HsYAML-aeson-0.2.0.0
- doctemplates-0.8.2
- git: https://github.com/jgm/commonmark-hs
- commit: 751dbe89ea2a94d32e9ba27436c5cccfcfda4358
+ commit: de354a3cabd447ed04440ace17fe44a79a490eb4
subdirs:
- commonmark
- commonmark-extensions