Markdown writer: prefer using raw_attribute when enabled.

The `raw_attribute` will be used to mark raw bits, even HTML
and LaTeX, and even when `raw_html` and `raw_tex` are enabled,
as they are by default.

To get the old behavior, disable `raw_attribute` in the writer.

Closes #4311.
This commit is contained in:
John MacFarlane 2019-07-18 22:30:05 -07:00
parent 5c655e86d5
commit 28cad16517
6 changed files with 58 additions and 16 deletions

View file

@ -467,6 +467,7 @@ blockToMarkdown' opts b@(RawBlock f str) = do
let renderEmpty = mempty <$ report (BlockNotRendered b)
case () of
_ | plain -> renderEmpty
| isEnabled Ext_raw_attribute opts -> rawAttribBlock
| f `elem` ["markdown", "markdown_github", "markdown_phpextra",
"markdown_mmd", "markdown_strict"] ->
return $ text str <> text "\n"
@ -484,7 +485,6 @@ blockToMarkdown' opts b@(RawBlock f str) = do
text str <> text "\n"
| isEnabled Ext_raw_attribute opts -> rawAttribBlock
| otherwise -> renderEmpty
| isEnabled Ext_raw_attribute opts -> rawAttribBlock
| otherwise -> renderEmpty
blockToMarkdown' opts HorizontalRule = do
return $ blankline <> text (replicate (writerColumns opts) '-') <> blankline
@ -1152,6 +1152,7 @@ inlineToMarkdown opts il@(RawInline f str) = do
| f `elem` ["markdown", "markdown_github", "markdown_phpextra",
"markdown_mmd", "markdown_strict"] ->
return $ text str
| isEnabled Ext_raw_attribute opts -> rawAttribInline
| f `elem` ["html", "html5", "html4"] ->
case () of
_ | isEnabled Ext_raw_html opts -> return $ text str
@ -1162,7 +1163,6 @@ inlineToMarkdown opts il@(RawInline f str) = do
_ | isEnabled Ext_raw_tex opts -> return $ text str
| isEnabled Ext_raw_attribute opts -> rawAttribInline
| otherwise -> renderEmpty
| isEnabled Ext_raw_attribute opts -> rawAttribInline
| otherwise -> renderEmpty
inlineToMarkdown opts (LineBreak) = do
plain <- asks envPlain

View file

@ -40,7 +40,7 @@ infix 4 =:
tests :: [TestTree]
tests = [ "indented code after list"
=: (orderedList [ para "one" <> para "two" ] <> codeBlock "test")
=?> "1. one\n\n two\n\n<!-- -->\n\n test"
=?> "1. one\n\n two\n\n```{=html}\n<!-- -->\n```\n test"
, "list with tight sublist"
=: bulletList [ plain "foo" <> bulletList [ plain "bar" ],
plain "baz" ]

View file

@ -12,7 +12,7 @@ Here is inline html:
<div>
<balise> bla bla
`<balise>`{=html} bla bla
</div>

View file

@ -1,5 +1,5 @@
```
% pandoc -f markdown+latex_macros -t markdown
% pandoc -f markdown+latex_macros -t markdown+raw_tex-raw_attribute
\newcommand{\my}{\phi}
$\my+\my$
^D
@ -9,7 +9,7 @@ $\phi+\phi$
```
```
% pandoc -f markdown-latex_macros -t markdown
% pandoc -f markdown-latex_macros -t markdown+raw_tex-raw_attribute
\newcommand{\my}{\phi}
$\my+\my$
^D
@ -70,7 +70,7 @@ x &= y\\\end{aligned}\]
```
```
% pandoc -f markdown+latex_macros -t markdown
% pandoc -f markdown+latex_macros -t markdown+raw_tex-raw_attribute
\newcommand{\my}{\phi}
\begin{equation}
\my+\my
@ -84,7 +84,7 @@ x &= y\\\end{aligned}\]
```
```
% pandoc -f markdown-latex_macros -t markdown
% pandoc -f markdown-latex_macros -t markdown+raw_tex-raw_attribute
\newcommand{\my}{\phi}
\begin{equation}
\my+\my
@ -98,7 +98,7 @@ x &= y\\\end{aligned}\]
```
```
% pandoc -f markdown+latex_macros -t markdown
% pandoc -f markdown+latex_macros -t markdown+raw_tex-raw_attribute
\newcommand{\my}{\emph{a}}
\my
^D

View file

@ -2,7 +2,7 @@
% pandoc -f latex+raw_tex -t markdown
\emph{Hi \foo{there}}
^D
*Hi \foo{there}*
*Hi `\foo{there}`{=latex}*
```
```
@ -16,7 +16,7 @@
% pandoc -f html+raw_html -t markdown
<em>Hi <blink>there</blink></em>
^D
*Hi <blink>there</blink>*
*Hi `<blink>`{=html}there`</blink>`{=html}*
```
```

View file

@ -399,18 +399,35 @@ bar
Interpreted markdown in a table:
```{=html}
<table>
```
```{=html}
<tr>
```
```{=html}
<td>
```
This is *emphasized*
```{=html}
</td>
```
```{=html}
<td>
```
And this is **strong**
```{=html}
</td>
```
```{=html}
</tr>
```
```{=html}
</table>
```
```{=html}
<script type="text/javascript">document.write('This *should not* be interpreted as markdown');</script>
```
Here's a simple block:
<div>
@ -447,41 +464,64 @@ foo
This should just be an HTML comment:
```{=html}
<!-- Comment -->
```
Multiline:
```{=html}
<!--
Blah
Blah
-->
```
```{=html}
<!--
This is another comment.
-->
```
Code block:
<!-- Comment -->
Just plain comment, with trailing spaces on the line:
```{=html}
<!-- foo -->
```
Code:
<hr />
Hr's:
```{=html}
<hr>
```
```{=html}
<hr />
```
```{=html}
<hr />
```
```{=html}
<hr>
```
```{=html}
<hr />
```
```{=html}
<hr />
```
```{=html}
<hr class="foo" id="bar" />
```
```{=html}
<hr class="foo" id="bar" />
```
```{=html}
<hr class="foo" id="bar">
```
------------------------------------------------------------------------------
@ -540,7 +580,7 @@ Ellipses...and...and....
LaTeX
=====
- \cite[22-23]{smith.1899}
- `\cite[22-23]{smith.1899}`{=tex}
- $2+2=4$
- $x \in y$
- $\alpha \wedge \omega$
@ -560,11 +600,13 @@ These shouldn't be math:
Here's a LaTeX table:
```{=tex}
\begin{tabular}{|l|l|}\hline
Animal & Number \\ \hline
Dog & 2 \\
Cat & 1 \\ \hline
\end{tabular}
```
------------------------------------------------------------------------------