@@ -355,7 +355,6 @@ parseBlocks = mconcat <$> manyTill block eof
355355
356356block :: MarkdownParser (F Blocks)
357357block = choice [ codeBlockFenced
358− , codeBlockBackticks
359358 , guardEnabled Ext_latex_macros *> (mempty <$ macro)
360359 , header
361360 , lhsCodeBlock
@@ -520,27 +519,18 @@ keyValAttr = try $ do
520519
521520codeBlockFenced :: MarkdownParser (F Blocks)
522521codeBlockFenced = try $ do
523− guardEnabled Ext_fenced_code_blocks
524− size <- blockDelimiter (=='~') Nothing
522+ c <- try (guardEnabled Ext_fenced_code_blocks >> lookAhead (char '~'))
523+ <|> (guardEnabled Ext_backtick_code_blocks >> lookAhead (char '`'))
524+ size <- blockDelimiter (== c) Nothing
525525 skipMany spaceChar
526526 attr <- option ([],[],[]) $
527− guardEnabled Ext_fenced_code_attributes >> attributes
527+ try (guardEnabled Ext_fenced_code_attributes >> attributes)
528+ <|> ((\x -> ("",[x],[])) <$> identifier)
528529 blankline
529− contents <- manyTill anyLine (blockDelimiter (=='~') (Just size))
530+ contents <- manyTill anyLine (blockDelimiter (== c) (Just size))
530531 blanklines
531532 return $ return $ B.codeBlockWith attr $ intercalate "\n" contents
532533
533−codeBlockBackticks :: MarkdownParser (F Blocks)
534−codeBlockBackticks = try $ do
535− guardEnabled Ext_backtick_code_blocks
536− blockDelimiter (=='`') (Just 3)
537− skipMany spaceChar
538− cls <- many1 alphaNum
539− blankline
540− contents <- manyTill anyLine $ blockDelimiter (=='`') (Just 3)
541− blanklines
542− return $ return $ B.codeBlockWith ("",[cls],[]) $ intercalate "\n" contents
543−
544534codeBlockIndented :: MarkdownParser (F Blocks)
545535codeBlockIndented = do
546536 contents <- many1 (indentedLine <|>