diff options
-rw-r--r-- | src/Text/Pandoc/Readers/Ipynb.hs | 6 | ||||
-rw-r--r-- | src/Text/Pandoc/Writers/Ipynb.hs | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Readers/Ipynb.hs b/src/Text/Pandoc/Readers/Ipynb.hs index 2497e6a0a..0bcde1990 100644 --- a/src/Text/Pandoc/Readers/Ipynb.hs +++ b/src/Text/Pandoc/Readers/Ipynb.hs @@ -72,8 +72,14 @@ notebookToPandoc :: (PandocMonad m, FromJSON (Notebook a)) notebookToPandoc opts notebook = do let cells = notebookCells notebook let (fmt,fmtminor) = notebookFormat notebook + let jupyterMetaFields :: [String] + jupyterMetaFields = ["kernelspec", "language_info", "toc"] let m = M.insert "nbformat" (MetaString $ show fmt) $ M.insert "nbformat_minor" (MetaString $ show fmtminor) $ + -- mark jupyter fields specially so it doesn't trigger toc + M.mapKeys (\k -> if k `elem` jupyterMetaFields + then "jupyter_" <> k + else k) $ jsonMetaToMeta (notebookMetadata notebook) let lang = case M.lookup "kernelspec" m of Just (MetaMap ks) -> diff --git a/src/Text/Pandoc/Writers/Ipynb.hs b/src/Text/Pandoc/Writers/Ipynb.hs index c9d71e180..257edc613 100644 --- a/src/Text/Pandoc/Writers/Ipynb.hs +++ b/src/Text/Pandoc/Writers/Ipynb.hs @@ -38,6 +38,7 @@ import Prelude import Control.Monad.State import qualified Data.Map as M import Data.Maybe (catMaybes, fromMaybe) +import Data.List (isPrefixOf) import Text.Pandoc.Options import Text.Pandoc.Definition import Data.Ipynb as Ipynb @@ -78,6 +79,11 @@ pandocToNotebook opts (Pandoc meta blocks) = do let inlineWriter ils = T.stripEnd <$> writeMarkdown opts{ writerTemplate = Nothing } (Pandoc nullMeta [Plain ils]) metadata' <- metaToJSON' blockWriter inlineWriter $ + (Meta . + M.mapKeys (\k -> if "jupyter_" `isPrefixOf` k + then drop 8 k + else k) . + unMeta) $ B.deleteMeta "nbformat" $ B.deleteMeta "nbformat_minor" $ meta let metadata = case fromJSON metadata' of |