git.iko.soy/typeable/pandoc
on master help sign in
Improve filterIpynbOutput.
5863e5cJohn MacFarlane
src/Text/Pandoc/Shared.hs+7−4
@@ -104,13 +104,12 @@ import Data.Char (isAlpha, isLower, isSpace, isUpper, toLower, isAlphaNum,
104 generalCategory, GeneralCategory(NonSpacingMark,
104 generalCategory, GeneralCategory(NonSpacingMark,
105 SpacingCombiningMark, EnclosingMark, ConnectorPunctuation))
105 SpacingCombiningMark, EnclosingMark, ConnectorPunctuation))
106import Data.Data (Data, Typeable)
106import Data.Data (Data, Typeable)
107−import Data.List (find, intercalate, intersperse, stripPrefix, sortBy)
107+import Data.List (find, intercalate, intersperse, stripPrefix)
108import qualified Data.Map as M
108import qualified Data.Map as M
109import Data.Maybe (mapMaybe)
109import Data.Maybe (mapMaybe)
110import Data.Sequence (ViewL (..), ViewR (..), viewl, viewr)
110import Data.Sequence (ViewL (..), ViewR (..), viewl, viewr)
111import qualified Data.Set as Set
111import qualified Data.Set as Set
112import qualified Data.Text as T
112import qualified Data.Text as T
113−import Data.Ord (comparing)
114import Data.Version (showVersion)
113import Data.Version (showVersion)
115import Network.URI (URI (uriScheme), escapeURIString, parseURI)
114import Network.URI (URI (uriScheme), escapeURIString, parseURI)
116import Paths_pandoc (version)
115import Paths_pandoc (version)
@@ -684,8 +683,11 @@ filterIpynbOutput mode = walk go
684 | fmt == Format "ipynb"
683 | fmt == Format "ipynb"
685 -> Div (ident, ("output":os), kvs) bs
684 -> Div (ident, ("output":os), kvs) bs
686 | otherwise -> Div (ident, ("output":os), kvs) $
685 | otherwise -> Div (ident, ("output":os), kvs) $
687− take 1 $ sortBy (comparing rank) bs
686+ [ b | b <- bs, rank b == highestRank ]
688− where
687+ where
688+ highestRank = case map rank bs of
689+ [] -> 0
690+ xs -> maximum xs
689 rank (RawBlock (Format "html") _)
691 rank (RawBlock (Format "html") _)
690 | fmt == Format "html" = (1 :: Int)
692 | fmt == Format "html" = (1 :: Int)
691 | fmt == Format "markdown" = 2
693 | fmt == Format "markdown" = 2
@@ -697,6 +699,7 @@ filterIpynbOutput mode = walk go
697 rank (RawBlock f _)
699 rank (RawBlock f _)
698 | fmt == f = 1
700 | fmt == f = 1
699 | otherwise = 3
701 | otherwise = 3
702+ rank (Para [Image{}]) = 1
700 rank _ = 2
703 rank _ = 2
701 go x = x
704 go x = x
702
705