diff options
| author | despresc <[email protected]> | 2019-11-05 15:13:45 -0500 |
|---|---|---|
| committer | despresc <[email protected]> | 2019-11-08 15:45:02 -0500 |
| commit | db6a63d1ff3f48317cb7e71afcda6ddc8bcf66bc (patch) | |
| tree | f4fc90f9cb1feae5e44e01851612be29b11b81c4 | |
| parent | aab8f811ca7d893465459173e176e894cb194d08 (diff) | |
Switch MIME to Text, add Legacy
| -rw-r--r-- | pandoc.cabal | 1 | ||||
| -rw-r--r-- | src/Text/Pandoc/Class.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/Legacy/MIME.hs | 24 | ||||
| -rw-r--r-- | src/Text/Pandoc/Lua/Marshaling/MediaBag.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/Lua/Module/MediaBag.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/MIME.hs | 22 | ||||
| -rw-r--r-- | src/Text/Pandoc/MediaBag.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/PDF.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/Readers/EPUB.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/Readers/Ipynb.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/SelfContained.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/Writers/Docx.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/Writers/EPUB.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/Writers/HTML.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/Writers/JATS.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/Writers/ODT.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/Writers/Powerpoint/Output.hs | 2 |
17 files changed, 50 insertions, 25 deletions
diff --git a/pandoc.cabal b/pandoc.cabal index 6e399ce82..1ca4fd260 100644 --- a/pandoc.cabal +++ b/pandoc.cabal @@ -555,6 +555,7 @@ library , Text.Pandoc.Legacy.Highlighting , Text.Pandoc.Legacy.Translations , Text.Pandoc.Legacy.Logging + , Text.Pandoc.Legacy.MIME -- other-modules: Text.Pandoc.App.CommandLineOptions, Text.Pandoc.App.FormatHeuristics, diff --git a/src/Text/Pandoc/Class.hs b/src/Text/Pandoc/Class.hs index a5559d36c..b328f4041 100644 --- a/src/Text/Pandoc/Class.hs +++ b/src/Text/Pandoc/Class.hs @@ -88,7 +88,7 @@ import Text.Pandoc.Legacy.Logging import Text.Pandoc.Legacy.Shared (uriPathToPath) -- TODO text: remove Legacy import Text.Parsec (ParsecT, getPosition, sourceLine, sourceName) import qualified Data.Time as IO (getCurrentTime) -import Text.Pandoc.MIME (MimeType, getMimeType, extensionFromMimeType) +import Text.Pandoc.Legacy.MIME (MimeType, getMimeType, extensionFromMimeType) import Text.Pandoc.Legacy.Definition -- TODO text: remove Legacy import Text.DocTemplates (TemplateMonad(..)) import Data.Digest.Pure.SHA (sha1, showDigest) diff --git a/src/Text/Pandoc/Legacy/MIME.hs b/src/Text/Pandoc/Legacy/MIME.hs new file mode 100644 index 000000000..40a327b12 --- /dev/null +++ b/src/Text/Pandoc/Legacy/MIME.hs @@ -0,0 +1,24 @@ +module Text.Pandoc.Legacy.MIME + ( MimeType + , getMimeType + , getMimeTypeDef + , extensionFromMimeType + , mediaCategory + ) where + +import qualified Data.Text as T +import qualified Text.Pandoc.MIME as TP + +type MimeType = String + +getMimeType :: FilePath -> Maybe MimeType +getMimeType = fmap T.unpack . TP.getMimeType + +getMimeTypeDef :: FilePath -> MimeType +getMimeTypeDef = T.unpack . TP.getMimeTypeDef + +extensionFromMimeType :: MimeType -> Maybe String +extensionFromMimeType = fmap T.unpack . TP.extensionFromMimeType . T.pack + +mediaCategory :: FilePath -> Maybe String +mediaCategory = fmap T.unpack . TP.mediaCategory diff --git a/src/Text/Pandoc/Lua/Marshaling/MediaBag.hs b/src/Text/Pandoc/Lua/Marshaling/MediaBag.hs index 816843c1d..fa051b923 100644 --- a/src/Text/Pandoc/Lua/Marshaling/MediaBag.hs +++ b/src/Text/Pandoc/Lua/Marshaling/MediaBag.hs @@ -19,7 +19,7 @@ import Foreign.Lua.Types.Peekable (reportValueOnFailure) import Foreign.Lua.Userdata (ensureUserdataMetatable, pushAnyWithMetatable, toAnyWithName) import Text.Pandoc.MediaBag (MediaBag, mediaItems) -import Text.Pandoc.MIME (MimeType) +import Text.Pandoc.Legacy.MIME (MimeType) import Text.Pandoc.Lua.Marshaling.AnyValue (AnyValue (..)) import qualified Data.ByteString.Lazy as BL diff --git a/src/Text/Pandoc/Lua/Module/MediaBag.hs b/src/Text/Pandoc/Lua/Module/MediaBag.hs index 261785665..d1a63d5c0 100644 --- a/src/Text/Pandoc/Lua/Module/MediaBag.hs +++ b/src/Text/Pandoc/Lua/Module/MediaBag.hs @@ -22,7 +22,7 @@ import Text.Pandoc.Class (CommonState (..), fetchItem, putCommonState, import Text.Pandoc.Lua.Marshaling () import Text.Pandoc.Lua.Marshaling.MediaBag (pushIterator) import Text.Pandoc.Lua.Util (addFunction) -import Text.Pandoc.MIME (MimeType) +import Text.Pandoc.Legacy.MIME (MimeType) import qualified Data.ByteString.Lazy as BL import qualified Foreign.Lua as Lua diff --git a/src/Text/Pandoc/MIME.hs b/src/Text/Pandoc/MIME.hs index ee0fe3efb..77f4c4b96 100644 --- a/src/Text/Pandoc/MIME.hs +++ b/src/Text/Pandoc/MIME.hs @@ -1,4 +1,5 @@ {-# LANGUAGE NoImplicitPrelude #-} +{-# LANGUAGE OverloadedStrings #-} {- | Module : Text.Pandoc.MIME Copyright : Copyright (C) 2011-2019 John MacFarlane @@ -13,14 +14,13 @@ Mime type lookup for ODT writer. module Text.Pandoc.MIME ( MimeType, getMimeType, getMimeTypeDef, extensionFromMimeType, mediaCategory ) where import Prelude -import Data.Char (toLower) import Data.List (isPrefixOf, isSuffixOf) -import Data.List.Split (splitOn) import qualified Data.Map as M +import qualified Data.Text as T import Data.Maybe (fromMaybe, listToMaybe) import System.FilePath -type MimeType = String +type MimeType = T.Text -- | Determine mime type appropriate for file path. getMimeType :: FilePath -> Maybe MimeType @@ -31,34 +31,34 @@ getMimeType fp | "Formula-" `isPrefixOf` fp && "/" `isSuffixOf` fp = Just "application/vnd.oasis.opendocument.formula" -- generic - | otherwise = M.lookup (map toLower $ drop 1 $ takeExtension fp) mimeTypes + | otherwise = M.lookup (T.toLower $ T.drop 1 $ T.pack $ takeExtension fp) mimeTypes -- | Determime mime type appropriate for file path, defaulting to -- “application/octet-stream” if nothing else fits. getMimeTypeDef :: FilePath -> MimeType getMimeTypeDef = fromMaybe "application/octet-stream" . getMimeType -extensionFromMimeType :: MimeType -> Maybe String +extensionFromMimeType :: MimeType -> Maybe T.Text extensionFromMimeType mimetype = - M.lookup (takeWhile (/=';') mimetype) reverseMimeTypes + M.lookup (T.takeWhile (/=';') mimetype) reverseMimeTypes -- note: we just look up the basic mime type, dropping the content-encoding etc. -- | Determine general media category for file path, e.g. -- -- prop> mediaCategory "foo.jpg" = Just "image" -mediaCategory :: FilePath -> Maybe String -mediaCategory fp = getMimeType fp >>= listToMaybe . splitOn "/" +mediaCategory :: FilePath -> Maybe T.Text +mediaCategory fp = getMimeType fp >>= listToMaybe . T.splitOn "/" -reverseMimeTypes :: M.Map MimeType String +reverseMimeTypes :: M.Map MimeType T.Text reverseMimeTypes = M.fromList $ map (\(k,v) -> (v,k)) mimeTypesList -mimeTypes :: M.Map String MimeType +mimeTypes :: M.Map T.Text MimeType mimeTypes = M.fromList mimeTypesList -- | Collection of common mime types. -- Except for first entry, list borrowed from -- <https://github.com/Happstack/happstack-server/blob/master/src/Happstack/Server/FileServe/BuildingBlocks.hs happstack-server> -mimeTypesList :: [(String, MimeType)] +mimeTypesList :: [(T.Text, MimeType)] mimeTypesList = [("cpt","image/x-corelphotopaint") ,("gz","application/x-gzip") diff --git a/src/Text/Pandoc/MediaBag.hs b/src/Text/Pandoc/MediaBag.hs index bb6fc88ac..9325aa725 100644 --- a/src/Text/Pandoc/MediaBag.hs +++ b/src/Text/Pandoc/MediaBag.hs @@ -30,7 +30,7 @@ import Data.Maybe (fromMaybe) import Data.Typeable (Typeable) import System.FilePath import qualified System.FilePath.Posix as Posix -import Text.Pandoc.MIME (MimeType, getMimeTypeDef) +import Text.Pandoc.Legacy.MIME (MimeType, getMimeTypeDef) -- | A container for a collection of binary resources, with names and -- mime types. Note that a 'MediaBag' is a Monoid, so 'mempty' diff --git a/src/Text/Pandoc/PDF.hs b/src/Text/Pandoc/PDF.hs index ebc1b8edd..0752c3809 100644 --- a/src/Text/Pandoc/PDF.hs +++ b/src/Text/Pandoc/PDF.hs @@ -42,7 +42,7 @@ import qualified System.IO.Error as IE import Text.DocLayout (literal) import Text.Pandoc.Legacy.Definition -- TODO text: remove Legacy import Text.Pandoc.Error (PandocError (PandocPDFProgramNotFoundError)) -import Text.Pandoc.MIME (getMimeType) +import Text.Pandoc.Legacy.MIME (getMimeType) import Text.Pandoc.Options (HTMLMathMethod (..), WriterOptions (..)) import Text.Pandoc.Process (pipeProcess) import System.Process (readProcessWithExitCode) diff --git a/src/Text/Pandoc/Readers/EPUB.hs b/src/Text/Pandoc/Readers/EPUB.hs index 0c87d3942..8503aae03 100644 --- a/src/Text/Pandoc/Readers/EPUB.hs +++ b/src/Text/Pandoc/Readers/EPUB.hs @@ -37,7 +37,7 @@ import Text.Pandoc.Class (PandocMonad, insertMedia) import Text.Pandoc.Legacy.Definition hiding (Attr) -- TODO text: remove Legacy import Text.Pandoc.Error import Text.Pandoc.Extensions (Extension (Ext_raw_html), enableExtension) -import Text.Pandoc.MIME (MimeType) +import Text.Pandoc.Legacy.MIME (MimeType) import Text.Pandoc.Options (ReaderOptions (..)) import Text.Pandoc.Readers.HTML (readHtml) import Text.Pandoc.Legacy.Shared (addMetaField, collapseFilePath, escapeURI) diff --git a/src/Text/Pandoc/Readers/Ipynb.hs b/src/Text/Pandoc/Readers/Ipynb.hs index f676a8895..979fce63c 100644 --- a/src/Text/Pandoc/Readers/Ipynb.hs +++ b/src/Text/Pandoc/Readers/Ipynb.hs @@ -29,7 +29,7 @@ import Text.Pandoc.Legacy.Logging import Text.Pandoc.Legacy.Definition -- TODO text: remove Legacy import Data.Ipynb as Ipynb import Text.Pandoc.Class -import Text.Pandoc.MIME (extensionFromMimeType) +import Text.Pandoc.Legacy.MIME (extensionFromMimeType) import Text.Pandoc.UTF8 import Text.Pandoc.Walk (walk) import Text.Pandoc.Error diff --git a/src/Text/Pandoc/SelfContained.hs b/src/Text/Pandoc/SelfContained.hs index 931113841..7368c1d6a 100644 --- a/src/Text/Pandoc/SelfContained.hs +++ b/src/Text/Pandoc/SelfContained.hs @@ -33,7 +33,7 @@ import Text.Pandoc.Class (PandocMonad (..), fetchItem, getInputFiles, report, setInputFiles) import Text.Pandoc.Error import Text.Pandoc.Legacy.Logging -import Text.Pandoc.MIME (MimeType) +import Text.Pandoc.Legacy.MIME (MimeType) import Text.Pandoc.Legacy.Shared (isURI, renderTags', trim) import Text.Pandoc.UTF8 (toString) import Text.Parsec (ParsecT, runParserT) diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs index fc7c362ea..8936cc1c3 100644 --- a/src/Text/Pandoc/Writers/Docx.hs +++ b/src/Text/Pandoc/Writers/Docx.hs @@ -47,7 +47,7 @@ import Text.Pandoc.Legacy.Highlighting (highlight) import Text.Pandoc.Error import Text.Pandoc.ImageSize import Text.Pandoc.Legacy.Logging -import Text.Pandoc.MIME (MimeType, extensionFromMimeType, getMimeType, +import Text.Pandoc.Legacy.MIME (MimeType, extensionFromMimeType, getMimeType, getMimeTypeDef) import Text.Pandoc.Options import Text.Pandoc.Writers.Docx.StyleMap diff --git a/src/Text/Pandoc/Writers/EPUB.hs b/src/Text/Pandoc/Writers/EPUB.hs index 619fd902c..75061403a 100644 --- a/src/Text/Pandoc/Writers/EPUB.hs +++ b/src/Text/Pandoc/Writers/EPUB.hs @@ -44,7 +44,7 @@ import Text.Pandoc.Legacy.Definition -- TODO text: remove Legacy import Text.Pandoc.Error import Text.Pandoc.ImageSize import Text.Pandoc.Legacy.Logging -import Text.Pandoc.MIME (MimeType, extensionFromMimeType, getMimeType) +import Text.Pandoc.Legacy.MIME (MimeType, extensionFromMimeType, getMimeType) import Text.Pandoc.Options (EPUBVersion (..), HTMLMathMethod (..), ObfuscationMethod (NoObfuscation), WrapOption (..), WriterOptions (..)) diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs index 1b00f61b6..370133ddb 100644 --- a/src/Text/Pandoc/Writers/HTML.hs +++ b/src/Text/Pandoc/Writers/HTML.hs @@ -83,7 +83,7 @@ import qualified Text.Blaze.XHtml1.Transitional.Attributes as A import Text.Pandoc.Class (PandocMonad, report, runPure) import Text.Pandoc.Error import Text.Pandoc.Legacy.Logging -import Text.Pandoc.MIME (mediaCategory) +import Text.Pandoc.Legacy.MIME (mediaCategory) import Text.TeXMath import Text.XML.Light (elChildren, unode, unqual) import qualified Text.XML.Light as XML diff --git a/src/Text/Pandoc/Writers/JATS.hs b/src/Text/Pandoc/Writers/JATS.hs index 6ce02f4df..6afa5cf9f 100644 --- a/src/Text/Pandoc/Writers/JATS.hs +++ b/src/Text/Pandoc/Writers/JATS.hs @@ -30,7 +30,7 @@ import Text.Pandoc.Class (PandocMonad, report) import Text.Pandoc.Legacy.Definition -- TODO text: remove Legacy import Text.Pandoc.Legacy.Highlighting (languages, languagesByExtension) import Text.Pandoc.Legacy.Logging -import Text.Pandoc.MIME (getMimeType) +import Text.Pandoc.Legacy.MIME (getMimeType) import Text.Pandoc.Walk (walk) import Text.Pandoc.Options import Text.DocLayout diff --git a/src/Text/Pandoc/Writers/ODT.hs b/src/Text/Pandoc/Writers/ODT.hs index 9588823d6..bc9526ebb 100644 --- a/src/Text/Pandoc/Writers/ODT.hs +++ b/src/Text/Pandoc/Writers/ODT.hs @@ -30,7 +30,7 @@ import qualified Text.Pandoc.Class as P import Text.Pandoc.Legacy.Definition -- TODO text: remove Legacy import Text.Pandoc.ImageSize import Text.Pandoc.Legacy.Logging -import Text.Pandoc.MIME (extensionFromMimeType, getMimeType) +import Text.Pandoc.Legacy.MIME (extensionFromMimeType, getMimeType) import Text.Pandoc.Options (WrapOption (..), WriterOptions (..)) import Text.DocLayout import Text.Pandoc.Legacy.Shared -- TODO text: remove Legacy (stringify, pandocVersion) diff --git a/src/Text/Pandoc/Writers/Powerpoint/Output.hs b/src/Text/Pandoc/Writers/Powerpoint/Output.hs index 7c46aefd3..86a0f9dd9 100644 --- a/src/Text/Pandoc/Writers/Powerpoint/Output.hs +++ b/src/Text/Pandoc/Writers/Powerpoint/Output.hs @@ -37,7 +37,7 @@ import Text.Pandoc.Class (PandocMonad) import Text.Pandoc.Error (PandocError(..)) import qualified Text.Pandoc.Class as P import Text.Pandoc.Options -import Text.Pandoc.MIME +import Text.Pandoc.Legacy.MIME import qualified Data.ByteString.Lazy as BL import Text.Pandoc.Writers.OOXML import qualified Data.Map as M |
