git.iko.soy/typeable/pandoc
on master help sign in
Ipynb: Put all jupyter metadata under 'jupyter' key.
2f54470John MacFarlane
src/Text/Pandoc/Readers/Ipynb.hs+1−1
@@ -83,7 +83,7 @@ notebookToPandoc opts notebook = do
83 _ -> "python"
83 _ -> "python"
84 bs <- mconcat <$> mapM (cellToBlocks opts lang) cells
84 bs <- mconcat <$> mapM (cellToBlocks opts lang) cells
85 let Pandoc _ blocks = B.doc bs
85 let Pandoc _ blocks = B.doc bs
86− return $ Pandoc (Meta m) blocks
86+ return $ Pandoc (Meta $ M.insert "jupyter" (MetaMap m) mempty) blocks
87
87
88cellToBlocks :: PandocMonad m
88cellToBlocks :: PandocMonad m
89 => ReaderOptions -> String -> Cell a -> m B.Blocks
89 => ReaderOptions -> String -> Cell a -> m B.Blocks
src/Text/Pandoc/Writers/Ipynb.hs+6−1
@@ -77,9 +77,14 @@ pandocToNotebook opts (Pandoc meta blocks) = do
77 opts{ writerTemplate = Nothing } (Pandoc nullMeta bs)
77 opts{ writerTemplate = Nothing } (Pandoc nullMeta bs)
78 let inlineWriter ils = T.stripEnd <$> writeMarkdown
78 let inlineWriter ils = T.stripEnd <$> writeMarkdown
79 opts{ writerTemplate = Nothing } (Pandoc nullMeta [Plain ils])
79 opts{ writerTemplate = Nothing } (Pandoc nullMeta [Plain ils])
80+ let jupyterMeta =
81+ case lookupMeta "jupyter" meta of
82+ Just (MetaMap m) -> (Meta m <> B.deleteMeta "jupyter" meta)
83+ _ -> meta
80 metadata' <- metaToJSON' blockWriter inlineWriter $
84 metadata' <- metaToJSON' blockWriter inlineWriter $
81 B.deleteMeta "nbformat" $
85 B.deleteMeta "nbformat" $
82− B.deleteMeta "nbformat_minor" $ meta
86+ B.deleteMeta "nbformat_minor" $ jupyterMeta
87+ -- convert from a Value (JSON object) to a M.Map Text Value:
83 let metadata = case fromJSON metadata' of
88 let metadata = case fromJSON metadata' of
84 Error _ -> mempty -- TODO warning here? shouldn't happen
89 Error _ -> mempty -- TODO warning here? shouldn't happen
85 Success x -> x
90 Success x -> x