diff options
author | John MacFarlane <jgm@berkeley.edu> | 2020-06-30 12:12:55 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2020-06-30 12:32:44 -0700 |
commit | efbc2050315b60c8a753dee6255465f1083019ab (patch) | |
tree | dff5d6b219bd3ec6933a643cfbde0ca24d0296e1 /src/Text/Pandoc/Readers | |
parent | 35a18bb65405a35abf89f25b3d4c33dbfd5b1239 (diff) | |
download | pandoc-efbc2050315b60c8a753dee6255465f1083019ab.tar.gz |
Ipnyb: allow lossless round-tripping of markdown cell content.
The reader now parses the contents of the markdown cell to a Pandoc
structure, but *also* stores the raw markdown in a `source`
attribute on the cell Div. When we convert back to markdown,
this attribute is stripped off and the original source is used.
When we convert to other formats, the attribute is usually
ignored (though it will come through in HTML as a `data-source`
attribute, not unhelpfully).
I'll note some potential drawbacks of this approach:
- It makes it impossible to use pandoc to clean up or
change the contents of markdown cells, e.g.
going from `+smart` to `-smart`.
- There may be formats where the addition of the `source`
attribute is problematic. I can't think of any, though.
Closes #5408.
Diffstat (limited to 'src/Text/Pandoc/Readers')
-rw-r--r-- | src/Text/Pandoc/Readers/Ipynb.hs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/Ipynb.hs b/src/Text/Pandoc/Readers/Ipynb.hs index a245bdad3..056fa431c 100644 --- a/src/Text/Pandoc/Readers/Ipynb.hs +++ b/src/Text/Pandoc/Readers/Ipynb.hs @@ -79,7 +79,8 @@ cellToBlocks opts lang c = do case cellType c of Ipynb.Markdown -> do Pandoc _ bs <- walk fixImage <$> readMarkdown opts source - return $ B.divWith ("",["cell","markdown"],kvs) + let kvs' = ("source", source) : kvs + return $ B.divWith ("",["cell","markdown"],kvs') $ B.fromList bs Ipynb.Heading lev -> do Pandoc _ bs <- readMarkdown opts |