Skip to content

Commit

Permalink
Add raw_markdown extension affecting ipynb reader.
Browse files Browse the repository at this point in the history
Specifying `-f ipynb+raw_markdown` will cause Markdown cells
to be represented as raw Markdown blocks, instead of being
parsed.  This is not what you want when going from `ipynb`
to other formats, but it may be useful when going from `ipynb`
to Markdown or to `ipynb`, to avoid semantically insignificant
changes in the contents of the Markdown cells that might
otherwise be introduced.

Closes #5408.
  • Loading branch information
jgm committed Jul 24, 2020
1 parent ac1f45c commit 48fb6d9
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 4 deletions.
8 changes: 8 additions & 0 deletions MANUAL.txt
Expand Up @@ -2910,6 +2910,14 @@ input formats
In the `muse` input format, this enables Text::Amuse
extensions to Emacs Muse markup.

#### Extension: `raw_markdown` ####

In the `ipynb` input format, this causes Markdown cells
to be included as raw Markdown blocks (allowing lossless
round-tripping) rather than being parsed. Use this only
when you are targetting `ipynb` or a markdown-based
output format.

#### Extension: `citations` {#org-citations}

Some aspects of [Pandoc's Markdown citation syntax](#citations) are also accepted
Expand Down
4 changes: 3 additions & 1 deletion src/Text/Pandoc/Extensions.hs
Expand Up @@ -133,6 +133,7 @@ data Extension =
| Ext_raw_attribute -- ^ Allow explicit raw blocks/inlines
| Ext_raw_html -- ^ Allow raw HTML
| Ext_raw_tex -- ^ Allow raw TeX (other than math)
| Ext_raw_markdown -- ^ Parse markdown in ipynb as raw markdown
| Ext_shortcut_reference_links -- ^ Shortcut reference links
| Ext_simple_tables -- ^ Pandoc-style simple tables
| Ext_smart -- ^ "Smart" quotes, apostrophes, ellipses, dashes
Expand Down Expand Up @@ -442,7 +443,8 @@ getAllExtensions f = universalExtensions <> getAll f
getAll "markdown_mmd" = allMarkdownExtensions
getAll "markdown_github" = allMarkdownExtensions
getAll "markdown" = allMarkdownExtensions
getAll "ipynb" = allMarkdownExtensions
getAll "ipynb" = allMarkdownExtensions <> extensionsFromList
[ Ext_raw_markdown ]
getAll "docx" = extensionsFromList
[ Ext_empty_paragraphs
, Ext_styles
Expand Down
6 changes: 5 additions & 1 deletion src/Text/Pandoc/Readers/Ipynb.hs
Expand Up @@ -78,7 +78,11 @@ cellToBlocks opts lang c = do
mapM_ addAttachment attachments
case cellType c of
Ipynb.Markdown -> do
Pandoc _ bs <- walk fixImage <$> readMarkdown opts source
bs <- if isEnabled Ext_raw_markdown opts
then return [RawBlock (Format "markdown") source]
else do
Pandoc _ bs <- walk fixImage <$> readMarkdown opts source
return bs
return $ B.divWith ("",["cell","markdown"],kvs)
$ B.fromList bs
Ipynb.Heading lev -> do
Expand Down
4 changes: 2 additions & 2 deletions src/Text/Pandoc/Writers/Markdown.hs
Expand Up @@ -483,10 +483,10 @@ blockToMarkdown' opts b@(RawBlock f str) = do
let renderEmpty = mempty <$ report (BlockNotRendered b)
case variant of
PlainText -> renderEmpty
_ | isEnabled Ext_raw_attribute opts -> rawAttribBlock
| f `elem` ["markdown", "markdown_github", "markdown_phpextra",
_ | f `elem` ["markdown", "markdown_github", "markdown_phpextra",
"markdown_mmd", "markdown_strict"] ->
return $ literal str <> literal "\n"
| isEnabled Ext_raw_attribute opts -> rawAttribBlock
| f `elem` ["html", "html5", "html4"] ->
case () of
_ | isEnabled Ext_markdown_attribute opts -> return $
Expand Down

0 comments on commit 48fb6d9

Please sign in to comment.