@@ -39,14 +39,13 @@ module Text.Pandoc.App (
40import Control.Applicative ((<|>))
40import Control.Applicative ((<|>))
41import qualified Control.Exception as E
41import qualified Control.Exception as E
42−import Control.Monad.Except (catchError, throwError)
42+import Control.Monad.Except (throwError)
43import Control.Monad
43import Control.Monad
44import Control.Monad.Trans
44import Control.Monad.Trans
45import Data.Aeson (eitherDecode', encode)
45import Data.Aeson (eitherDecode', encode)
46import qualified Data.ByteString as BS
46import qualified Data.ByteString as BS
47import qualified Data.ByteString.Lazy as B
47import qualified Data.ByteString.Lazy as B
48import Data.Char (toLower, toUpper)
48import Data.Char (toLower, toUpper)
49−import Data.Digest.Pure.SHA (sha1, showDigest)
50import qualified Data.Set as Set
49import qualified Data.Set as Set
51import Data.Foldable (foldrM)
50import Data.Foldable (foldrM)
52import Data.List (intercalate, isPrefixOf, isSuffixOf, sort)
51import Data.List (intercalate, isPrefixOf, isSuffixOf, sort)
@@ -70,19 +69,16 @@ import System.IO (stdout)
70import System.IO.Error (isDoesNotExistError)
69import System.IO.Error (isDoesNotExistError)
71import Text.Pandoc
70import Text.Pandoc
72import Text.Pandoc.Builder (setMeta)
71import Text.Pandoc.Builder (setMeta)
73−import Text.Pandoc.Class (PandocIO, getLog, withMediaBag, getMediaBag,
72+import Text.Pandoc.Class (PandocIO, getLog, withMediaBag,
74− fetchItem, insertMedia, report)
73+ extractMedia, fillMedia)
75import Text.Pandoc.Highlighting (highlightingStyles)
74import Text.Pandoc.Highlighting (highlightingStyles)
76import Text.Pandoc.Lua ( runLuaFilter )
75import Text.Pandoc.Lua ( runLuaFilter )
77−import Text.Pandoc.MediaBag (extractMediaBag, mediaDirectory)
78−import Text.Pandoc.MIME (extensionFromMimeType)
79import Text.Pandoc.PDF (makePDF)
76import Text.Pandoc.PDF (makePDF)
80import Text.Pandoc.Process (pipeProcess)
77import Text.Pandoc.Process (pipeProcess)
81import Text.Pandoc.SelfContained (makeSelfContained, makeDataURI)
78import Text.Pandoc.SelfContained (makeSelfContained, makeDataURI)
82import Text.Pandoc.Shared (headerShift, openURL, readDataFile,
79import Text.Pandoc.Shared (headerShift, openURL, readDataFile,
83 readDataFileUTF8, safeRead, tabFilter)
80 readDataFileUTF8, safeRead, tabFilter)
84import qualified Text.Pandoc.UTF8 as UTF8
81import qualified Text.Pandoc.UTF8 as UTF8
85−import Text.Pandoc.Walk (walkM, walk)
86import Text.Pandoc.XML (toEntities)
82import Text.Pandoc.XML (toEntities)
87import Text.Printf
83import Text.Printf
88#ifndef _WINDOWS
84#ifndef _WINDOWS
@@ -731,48 +727,6 @@ defaultWriterName x =
732-- Transformations of a Pandoc document post-parsing:
728-- Transformations of a Pandoc document post-parsing:
734−-- | Traverse tree, filling media bag.
735−fillMedia :: Maybe String -> Pandoc -> PandocIO Pandoc
736−fillMedia sourceURL d = walkM handleImage d
737− where handleImage :: Inline -> PandocIO Inline
738− handleImage (Image attr lab (src, tit)) = catchError
739− (do (bs, mt) <- fetchItem sourceURL src
740− let ext = fromMaybe (takeExtension src)
741− (mt >>= extensionFromMimeType)
742− let bs' = B.fromChunks [bs]
743− let basename = showDigest $ sha1 bs'
744− let fname = basename <.> ext
745− insertMedia fname mt bs'
746− return $ Image attr lab (fname, tit))
749− PandocResourceNotFound _ -> do
750− report $ CouldNotFetchResource src
751− "replacing image with description"
753− return $ Span ("",["image"],[]) lab
754− PandocHttpError u er -> do
755− report $ CouldNotFetchResource u
756− (show er ++ "\rReplacing image with description.")
758− return $ Span ("",["image"],[]) lab
760− handleImage x = return x
762−extractMedia :: FilePath -> Pandoc -> PandocIO Pandoc
763−extractMedia dir d = do
764− media <- getMediaBag
765− case [fp | (fp, _, _) <- mediaDirectory media] of
768− liftIO $ extractMediaBag True dir media
769− return $ walk (adjustImagePath dir fps) d
771−adjustImagePath :: FilePath -> [FilePath] -> Inline -> Inline
772−adjustImagePath dir paths (Image attr lab (src, tit))
773− | src `elem` paths = Image attr lab (dir ++ "/" ++ src, tit)
774−adjustImagePath _ _ x = x
776applyTransforms :: Monad m => [Transform] -> Pandoc -> m Pandoc
730applyTransforms :: Monad m => [Transform] -> Pandoc -> m Pandoc
777applyTransforms transforms d = return $ foldr ($) d transforms
731applyTransforms transforms d = return $ foldr ($) d transforms