git.iko.soy/typeable/pandoc
on master help sign in
Markdown reader: improved parsing of indented raw HTML blocks.
82cc7fbJohn MacFarlane
src/Text/Pandoc/Readers/Markdown.hs+7−1
@@ -1088,13 +1088,19 @@ rawTeXBlock = do
1088rawHtmlBlocks :: PandocMonad m => MarkdownParser m (F Blocks)
1088rawHtmlBlocks :: PandocMonad m => MarkdownParser m (F Blocks)
1089rawHtmlBlocks = do
1089rawHtmlBlocks = do
1090 (TagOpen tagtype _, raw) <- htmlTag isBlockTag
1090 (TagOpen tagtype _, raw) <- htmlTag isBlockTag
1091+ -- we don't want '<td> text' to be a code block:
1092+ skipMany spaceChar
1093+ indentlevel <- (blankline >> length <$> many (char ' ')) <|> return 0
1091 -- try to find closing tag
1094 -- try to find closing tag
1092 -- we set stateInHtmlBlock so that closing tags that can be either block or
1095 -- we set stateInHtmlBlock so that closing tags that can be either block or
1093 -- inline will not be parsed as inline tags
1096 -- inline will not be parsed as inline tags
1094 oldInHtmlBlock <- stateInHtmlBlock <$> getState
1097 oldInHtmlBlock <- stateInHtmlBlock <$> getState
1095 updateState $ \st -> st{ stateInHtmlBlock = Just tagtype }
1098 updateState $ \st -> st{ stateInHtmlBlock = Just tagtype }
1096 let closer = htmlTag (\x -> x ~== TagClose tagtype)
1099 let closer = htmlTag (\x -> x ~== TagClose tagtype)
1100+ let block' = do notFollowedBy' closer
1101+ atMostSpaces indentlevel
1102+ block
1097− contents <- mconcat <$> many (notFollowedBy' closer >> block)
1103+ contents <- mconcat <$> many block'
1098 result <-
1104 result <-
1099 (closer >>= \(_, rawcloser) -> return (
1105 (closer >>= \(_, rawcloser) -> return (
1100 return (B.rawBlock "html" $ stripMarkdownAttribute raw) <>
1106 return (B.rawBlock "html" $ stripMarkdownAttribute raw) <>
test/command/1841.mdnew file+42
@@ -0,0 +1,42 @@
1+```
2+% pandoc
3+<table>
4+<tr>
5+<td> *one*</td>
6+<td> [a link](http://google.com)</td>
7+</tr>
8+</table>
9+^D
10+<table>
11+<tr>
12+<td>
13+<em>one</em>
14+</td>
15+<td>
16+<a href="http://google.com">a link</a>
17+</td>
18+</tr>
19+</table>
20+```
21+
22+```
23+% pandoc
24+<table>
25+ <tr>
26+ <td>*one*</td>
27+ <td>[a link](http://google.com)</td>
28+ </tr>
29+</table>
30+^D
31+<table>
32+<tr>
33+<td>
34+<em>one</em>
35+</td>
36+<td>
37+<a href="http://google.com">a link</a>
38+</td>
39+</tr>
40+</table>
41+```
42+