diff options
| author | mpickering <matthewtpickering@gmail.com> | 2014-09-25 12:19:52 +0100 | 
|---|---|---|
| committer | mpickering <matthewtpickering@gmail.com> | 2014-09-25 12:19:52 +0100 | 
| commit | 56e4ecab20613d86a6660547ed87e7ff4b80d632 (patch) | |
| tree | e5b71a799131917ff60b1f84d3e910ca931a964c /src | |
| parent | 0fbe7df81877911000dff14ac493fd837f9eb718 (diff) | |
| download | pandoc-56e4ecab20613d86a6660547ed87e7ff4b80d632.tar.gz | |
MediaBag: Fixes Windows specific path problems
Changes the internal representation to fix the problem.
I haven't tested this on windows.
Closes #1597
Diffstat (limited to 'src')
| -rw-r--r-- | src/Text/Pandoc/MediaBag.hs | 10 | 
1 files changed, 5 insertions, 5 deletions
| diff --git a/src/Text/Pandoc/MediaBag.hs b/src/Text/Pandoc/MediaBag.hs index 5921b56cf..a55d5417e 100644 --- a/src/Text/Pandoc/MediaBag.hs +++ b/src/Text/Pandoc/MediaBag.hs @@ -51,7 +51,7 @@ import System.IO (stderr)  -- mime types.  Note that a 'MediaBag' is a Monoid, so 'mempty'  -- can be used for an empty 'MediaBag', and '<>' can be used to append  -- two 'MediaBag's. -newtype MediaBag = MediaBag (M.Map String (MimeType, BL.ByteString)) +newtype MediaBag = MediaBag (M.Map [String] (MimeType, BL.ByteString))          deriving (Monoid)  instance Show MediaBag where @@ -65,7 +65,7 @@ insertMedia :: FilePath       -- ^ relative path and canonical name of resource              -> MediaBag              -> MediaBag  insertMedia fp mbMime contents (MediaBag mediamap) = -  MediaBag (M.insert fp (mime, contents) mediamap) +  MediaBag (M.insert (splitPath fp) (mime, contents) mediamap)    where mime = fromMaybe fallback mbMime          fallback = case takeExtension fp of                          ".gz"   -> getMimeTypeDef $ dropExtension fp @@ -75,14 +75,14 @@ insertMedia fp mbMime contents (MediaBag mediamap) =  lookupMedia :: FilePath              -> MediaBag              -> Maybe (MimeType, BL.ByteString) -lookupMedia fp (MediaBag mediamap) = M.lookup fp mediamap +lookupMedia fp (MediaBag mediamap) = M.lookup (splitPath fp) mediamap  -- | Get a list of the file paths stored in a 'MediaBag', with  -- their corresponding mime types and the lengths in bytes of the contents.  mediaDirectory :: MediaBag -> [(String, MimeType, Int)]  mediaDirectory (MediaBag mediamap) =    M.foldWithKey (\fp (mime,contents) -> -      ((fp, mime, fromIntegral $ BL.length contents):)) [] mediamap +      (((joinPath fp), mime, fromIntegral $ BL.length contents):)) [] mediamap  -- | Extract contents of MediaBag to a given directory.  Print informational  -- messages if 'verbose' is true. @@ -93,7 +93,7 @@ extractMediaBag :: Bool  extractMediaBag verbose dir (MediaBag mediamap) = do    sequence_ $ M.foldWithKey       (\fp (_ ,contents) -> -        ((writeMedia verbose dir (fp, contents)):)) [] mediamap +        ((writeMedia verbose dir (joinPath fp, contents)):)) [] mediamap  writeMedia :: Bool -> FilePath -> (FilePath, BL.ByteString) -> IO ()  writeMedia verbose dir (subpath, bs) = do | 
