git.iko.soy/typeable/pandoc
on master help sign in
Text.Pandoc.MIME: add mediaCategory [API change]
commit47249b05c4345a40353a37f4b7f7170aa2ea5773 authormb21 <mb21@users.noreply.github.com> dateSat 11 May 2019, 18:13 (7 years ago) parent2ad5dac
1 file changed+9−2
src/Text/Pandoc/MIME.hs+9−2
src/Text/Pandoc/MIME.hs+9−2
@@ -11,12 +11,13 @@
1111Mime type lookup for ODT writer.
1212-}
1313module Text.Pandoc.MIME ( MimeType, getMimeType, getMimeTypeDef,
14− extensionFromMimeType )where
14+ extensionFromMimeType, mediaCategory ) where
1515import Prelude
1616import Data.Char (toLower)
1717import Data.List (isPrefixOf, isSuffixOf)
18+import Data.List.Split (splitOn)
1819import qualified Data.Map as M
19−import Data.Maybe (fromMaybe)
20+import Data.Maybe (fromMaybe, listToMaybe)
2021import System.FilePath
2122
2223type MimeType = String
@@ -42,6 +43,12 @@ extensionFromMimeType mimetype =
4243 M.lookup (takeWhile (/=';') mimetype) reverseMimeTypes
4344 -- note: we just look up the basic mime type, dropping the content-encoding etc.
4445
46+-- | Determine general media category for file path, e.g.
47+--
48+-- prop> mediaCategory "foo.jpg" = Just "image"
49+mediaCategory :: FilePath -> Maybe String
50+mediaCategory fp = getMimeType fp >>= listToMaybe . splitOn "/"
51+
4552reverseMimeTypes :: M.Map MimeType String
4653reverseMimeTypes = M.fromList $ map (\(k,v) -> (v,k)) mimeTypesList
4754