From aa79b3035c3343adf1bb41b37266049a65ab5da7 Mon Sep 17 00:00:00 2001 From: John MacFarlane <jgm@berkeley.edu> Date: Thu, 10 Jun 2021 16:36:54 -0700 Subject: [PATCH] T.P.MIME, extensionFromMimeType: add a few special cases. When we do a reverse lookup in the MIME table, we just get the last match, so when the same mime type is associated with several different extensions, we sometimes got weird results, e.g. `.vs` for `text/plain`. These special cases help us get the most standard extensions for mime types like `text/plain`. --- src/Text/Pandoc/MIME.hs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Text/Pandoc/MIME.hs b/src/Text/Pandoc/MIME.hs index 3d06e1579..77c7069e9 100644 --- a/src/Text/Pandoc/MIME.hs +++ b/src/Text/Pandoc/MIME.hs @@ -43,6 +43,16 @@ getMimeTypeDef :: FilePath -> MimeType getMimeTypeDef = fromMaybe "application/octet-stream" . getMimeType extensionFromMimeType :: MimeType -> Maybe T.Text +-- few special cases, where there are multiple options: +extensionFromMimeType "text/plain" = Just "txt" +extensionFromMimeType "video/quicktime" = Just "mov" +extensionFromMimeType "video/mpeg" = Just "mpeg" +extensionFromMimeType "video/dv" = Just "dv" +extensionFromMimeType "image/vnd.djvu" = Just "djvu" +extensionFromMimeType "image/tiff" = Just "tiff" +extensionFromMimeType "image/jpeg" = Just "jpg" +extensionFromMimeType "application/xml" = Just "xml" +extensionFromMimeType "application/ogg" = Just "ogg" extensionFromMimeType mimetype = M.lookup (T.takeWhile (/=';') mimetype) reverseMimeTypes -- note: we just look up the basic mime type, dropping the content-encoding etc.