Allow fenced code blocks to be indented 1-3 spaces.
This brings our handling of them into alignment with CommonMark's. Closes #??.
This commit is contained in:
parent
f72d763655
commit
1592d38821
2 changed files with 26 additions and 2 deletions
|
@ -623,8 +623,9 @@ indentedLine = indentSpaces >> anyLineNewline
|
|||
blockDelimiter :: PandocMonad m
|
||||
=> (Char -> Bool)
|
||||
-> Maybe Int
|
||||
-> ParserT [Char] st m Int
|
||||
-> ParserT [Char] ParserState m Int
|
||||
blockDelimiter f len = try $ do
|
||||
skipNonindentSpaces
|
||||
c <- lookAhead (satisfy f)
|
||||
case len of
|
||||
Just l -> count l (char c) >> many (char c) >> return l
|
||||
|
@ -689,6 +690,8 @@ rawAttribute = do
|
|||
|
||||
codeBlockFenced :: PandocMonad m => MarkdownParser m (F Blocks)
|
||||
codeBlockFenced = try $ do
|
||||
indentchars <- nonindentSpaces
|
||||
let indentLevel = length indentchars
|
||||
c <- try (guardEnabled Ext_fenced_code_blocks >> lookAhead (char '~'))
|
||||
<|> (guardEnabled Ext_backtick_code_blocks >> lookAhead (char '`'))
|
||||
size <- blockDelimiter (== c) Nothing
|
||||
|
@ -701,7 +704,8 @@ codeBlockFenced = try $ do
|
|||
<|> ((\x -> ("",[toLanguageId x],[])) <$> many1 nonspaceChar)))
|
||||
blankline
|
||||
contents <- intercalate "\n" <$>
|
||||
manyTill anyLine (blockDelimiter (== c) (Just size))
|
||||
manyTill (gobbleAtMostSpaces indentLevel >> anyLine)
|
||||
(blockDelimiter (== c) (Just size))
|
||||
blanklines
|
||||
return $ return $
|
||||
case rawattr of
|
||||
|
|
20
test/command/indented-fences.md
Normal file
20
test/command/indented-fences.md
Normal file
|
@ -0,0 +1,20 @@
|
|||
`````
|
||||
% pandoc -t native
|
||||
```haskell
|
||||
let x = y
|
||||
in y
|
||||
```
|
||||
^D
|
||||
[CodeBlock ("",["haskell"],[]) "let x = y\nin y"]
|
||||
`````
|
||||
`````
|
||||
% pandoc -t native
|
||||
~~~ {.haskell}
|
||||
let x = y
|
||||
in y +
|
||||
y +
|
||||
y
|
||||
~~~
|
||||
^D
|
||||
[CodeBlock ("",["haskell"],[]) " let x = y\nin y +\ny +\ny"]
|
||||
`````
|
Loading…
Reference in a new issue