git.iko.soy/typeable/pandoc
on master help sign in
Prepend `jupyter_` to jupyter metadata keys.

This avoids conflics with things like 'toc'.

commit5eaff399d5d6dc30b0d453eff42c4101674d75ab authorJohn MacFarlane <jgm@berkeley.edu> dateThu 24 Jan 2019, 09:35 (8 years ago) parente18d9ba
2 files changed+12
src/Text/Pandoc/Readers/Ipynb.hs+6 src/Text/Pandoc/Writers/Ipynb.hs+6
src/Text/Pandoc/Readers/Ipynb.hs+6
@@ -72,8 +72,14 @@ notebookToPandoc :: (PandocMonad m, FromJSON (Notebook a))
7272notebookToPandoc opts notebook = do
7373 let cells = notebookCells notebook
7474 let (fmt,fmtminor) = notebookFormat notebook
75+ let jupyterMetaFields :: [String]
76+ jupyterMetaFields = ["kernelspec", "language_info", "toc"]
7577 let m = M.insert "nbformat" (MetaString $ show fmt) $
7678 M.insert "nbformat_minor" (MetaString $ show fmtminor) $
79+ -- mark jupyter fields specially so it doesn't trigger toc
80+ M.mapKeys (\k -> if k `elem` jupyterMetaFields
81+ then "jupyter_" <> k
82+ else k) $
7783 jsonMetaToMeta (notebookMetadata notebook)
7884 let lang = case M.lookup "kernelspec" m of
7985 Just (MetaMap ks) ->
src/Text/Pandoc/Writers/Ipynb.hs+6
@@ -38,6 +38,7 @@ import Prelude
3838import Control.Monad.State
3939import qualified Data.Map as M
4040import Data.Maybe (catMaybes, fromMaybe)
41+import Data.List (isPrefixOf)
4142import Text.Pandoc.Options
4243import Text.Pandoc.Definition
4344import Data.Ipynb as Ipynb
@@ -78,6 +79,11 @@ pandocToNotebook opts (Pandoc meta blocks) = do
7879 let inlineWriter ils = T.stripEnd <$> writeMarkdown
7980 opts{ writerTemplate = Nothing } (Pandoc nullMeta [Plain ils])
8081 metadata' <- metaToJSON' blockWriter inlineWriter $
82+ (Meta .
83+ M.mapKeys (\k -> if "jupyter_" `isPrefixOf` k
84+ then drop 8 k
85+ else k) .
86+ unMeta) $
8187 B.deleteMeta "nbformat" $
8288 B.deleteMeta "nbformat_minor" $ meta
8389 let metadata = case fromJSON metadata' of