aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2011-07-19 12:01:01 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2011-07-19 12:01:20 -0700
commit1c28c5308f0991c09af8dcbf4e555ee77fe1dab1 (patch)
tree57e5b6f63309aa526566a2d74684b9d3f5f393af
parente2aec87956762768c5ec7759ec0725c12648dfff (diff)
downloadpandoc-1c28c5308f0991c09af8dcbf4e555ee77fe1dab1.tar.gz
Added unexported Text.Pandoc.MIME.
Moved getMimeType from Text.Pandoc.Shared to Text.Pandoc.MIME, so we won't have an API change.
-rw-r--r--pandoc.cabal1
-rw-r--r--src/Text/Pandoc/MIME.hs483
-rw-r--r--src/Text/Pandoc/Shared.hs452
-rw-r--r--src/Text/Pandoc/Writers/ODT.hs3
4 files changed, 487 insertions, 452 deletions
diff --git a/pandoc.cabal b/pandoc.cabal
index 8da915cb2..cb8db738f 100644
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -262,6 +262,7 @@ Library
Text.Pandoc.Biblio
Other-Modules: Text.Pandoc.XML,
Text.Pandoc.UTF8,
+ Text.Pandoc.MIME,
Text.Pandoc.UUID,
Paths_pandoc
diff --git a/src/Text/Pandoc/MIME.hs b/src/Text/Pandoc/MIME.hs
new file mode 100644
index 000000000..c52a4c475
--- /dev/null
+++ b/src/Text/Pandoc/MIME.hs
@@ -0,0 +1,483 @@
+{-
+Copyright (C) 2011 John MacFarlane <jgm@berkeley.edu>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+-}
+
+{- |
+ Module : Text.Pandoc.MIME
+ Copyright : Copyright (C) 2011 John MacFarlane
+ License : GNU GPL, version 2 or above
+
+ Maintainer : John MacFarlane <jgm@berkeley.edu>
+ Stability : alpha
+ Portability : portable
+
+Mime type lookup for ODT writer.
+-}
+module Text.Pandoc.MIME ( getMimeType )
+where
+import System.FilePath
+import Data.Char ( toLower )
+import qualified Data.Map as M
+
+-- | Determine mime type appropriate for file path.
+getMimeType :: FilePath -> Maybe String
+getMimeType f = M.lookup (map toLower $ drop 1 $ takeExtension f) mimeTypes
+ where mimeTypes = M.fromList -- List borrowed from happstack-server.
+ [("gz","application/x-gzip")
+ ,("cabal","application/x-cabal")
+ ,("%","application/x-trash")
+ ,("323","text/h323")
+ ,("3gp","video/3gpp")
+ ,("7z","application/x-7z-compressed")
+ ,("abw","application/x-abiword")
+ ,("ai","application/postscript")
+ ,("aif","audio/x-aiff")
+ ,("aifc","audio/x-aiff")
+ ,("aiff","audio/x-aiff")
+ ,("alc","chemical/x-alchemy")
+ ,("art","image/x-jg")
+ ,("asc","text/plain")
+ ,("asf","video/x-ms-asf")
+ ,("asn","chemical/x-ncbi-asn1")
+ ,("aso","chemical/x-ncbi-asn1-binary")
+ ,("asx","video/x-ms-asf")
+ ,("atom","application/atom")
+ ,("atomcat","application/atomcat+xml")
+ ,("atomsrv","application/atomserv+xml")
+ ,("au","audio/basic")
+ ,("avi","video/x-msvideo")
+ ,("b","chemical/x-molconn-Z")
+ ,("bak","application/x-trash")
+ ,("bat","application/x-msdos-program")
+ ,("bcpio","application/x-bcpio")
+ ,("bib","text/x-bibtex")
+ ,("bin","application/octet-stream")
+ ,("bmp","image/x-ms-bmp")
+ ,("boo","text/x-boo")
+ ,("book","application/x-maker")
+ ,("bsd","chemical/x-crossfire")
+ ,("c","text/x-csrc")
+ ,("c++","text/x-c++src")
+ ,("c3d","chemical/x-chem3d")
+ ,("cab","application/x-cab")
+ ,("cac","chemical/x-cache")
+ ,("cache","chemical/x-cache")
+ ,("cap","application/cap")
+ ,("cascii","chemical/x-cactvs-binary")
+ ,("cat","application/vnd.ms-pki.seccat")
+ ,("cbin","chemical/x-cactvs-binary")
+ ,("cbr","application/x-cbr")
+ ,("cbz","application/x-cbz")
+ ,("cc","text/x-c++src")
+ ,("cdf","application/x-cdf")
+ ,("cdr","image/x-coreldraw")
+ ,("cdt","image/x-coreldrawtemplate")
+ ,("cdx","chemical/x-cdx")
+ ,("cdy","application/vnd.cinderella")
+ ,("cef","chemical/x-cxf")
+ ,("cer","chemical/x-cerius")
+ ,("chm","chemical/x-chemdraw")
+ ,("chrt","application/x-kchart")
+ ,("cif","chemical/x-cif")
+ ,("class","application/java-vm")
+ ,("cls","text/x-tex")
+ ,("cmdf","chemical/x-cmdf")
+ ,("cml","chemical/x-cml")
+ ,("cod","application/vnd.rim.cod")
+ ,("com","application/x-msdos-program")
+ ,("cpa","chemical/x-compass")
+ ,("cpio","application/x-cpio")
+ ,("cpp","text/x-c++src")
+ ,("cpt","application/mac-compactpro")
+ ,("crl","application/x-pkcs7-crl")
+ ,("crt","application/x-x509-ca-cert")
+ ,("csf","chemical/x-cache-csf")
+ ,("csh","application/x-csh")
+ ,("csm","chemical/x-csml")
+ ,("csml","chemical/x-csml")
+ ,("css","text/css")
+ ,("csv","text/csv")
+ ,("ctab","chemical/x-cactvs-binary")
+ ,("ctx","chemical/x-ctx")
+ ,("cu","application/cu-seeme")
+ ,("cub","chemical/x-gaussian-cube")
+ ,("cxf","chemical/x-cxf")
+ ,("cxx","text/x-c++src")
+ ,("d","text/x-dsrc")
+ ,("dat","chemical/x-mopac-input")
+ ,("dcr","application/x-director")
+ ,("deb","application/x-debian-package")
+ ,("dif","video/dv")
+ ,("diff","text/x-diff")
+ ,("dir","application/x-director")
+ ,("djv","image/vnd.djvu")
+ ,("djvu","image/vnd.djvu")
+ ,("dl","video/dl")
+ ,("dll","application/x-msdos-program")
+ ,("dmg","application/x-apple-diskimage")
+ ,("dms","application/x-dms")
+ ,("doc","application/msword")
+ ,("dot","application/msword")
+ ,("dv","video/dv")
+ ,("dvi","application/x-dvi")
+ ,("dx","chemical/x-jcamp-dx")
+ ,("dxr","application/x-director")
+ ,("emb","chemical/x-embl-dl-nucleotide")
+ ,("embl","chemical/x-embl-dl-nucleotide")
+ ,("eml","message/rfc822")
+ ,("ent","chemical/x-ncbi-asn1-ascii")
+ ,("eps","application/postscript")
+ ,("etx","text/x-setext")
+ ,("exe","application/x-msdos-program")
+ ,("ez","application/andrew-inset")
+ ,("fb","application/x-maker")
+ ,("fbdoc","application/x-maker")
+ ,("fch","chemical/x-gaussian-checkpoint")
+ ,("fchk","chemical/x-gaussian-checkpoint")
+ ,("fig","application/x-xfig")
+ ,("flac","application/x-flac")
+ ,("fli","video/fli")
+ ,("fm","application/x-maker")
+ ,("frame","application/x-maker")
+ ,("frm","application/x-maker")
+ ,("gal","chemical/x-gaussian-log")
+ ,("gam","chemical/x-gamess-input")
+ ,("gamin","chemical/x-gamess-input")
+ ,("gau","chemical/x-gaussian-input")
+ ,("gcd","text/x-pcs-gcd")
+ ,("gcf","application/x-graphing-calculator")
+ ,("gcg","chemical/x-gcg8-sequence")
+ ,("gen","chemical/x-genbank")
+ ,("gf","application/x-tex-gf")
+ ,("gif","image/gif")
+ ,("gjc","chemical/x-gaussian-input")
+ ,("gjf","chemical/x-gaussian-input")
+ ,("gl","video/gl")
+ ,("gnumeric","application/x-gnumeric")
+ ,("gpt","chemical/x-mopac-graph")
+ ,("gsf","application/x-font")
+ ,("gsm","audio/x-gsm")
+ ,("gtar","application/x-gtar")
+ ,("h","text/x-chdr")
+ ,("h++","text/x-c++hdr")
+ ,("hdf","application/x-hdf")
+ ,("hh","text/x-c++hdr")
+ ,("hin","chemical/x-hin")
+ ,("hpp","text/x-c++hdr")
+ ,("hqx","application/mac-binhex40")
+ ,("hs","text/x-haskell")
+ ,("hta","application/hta")
+ ,("htc","text/x-component")
+ ,("htm","text/html")
+ ,("html","text/html")
+ ,("hxx","text/x-c++hdr")
+ ,("ica","application/x-ica")
+ ,("ice","x-conference/x-cooltalk")
+ ,("ico","image/x-icon")
+ ,("ics","text/calendar")
+ ,("icz","text/calendar")
+ ,("ief","image/ief")
+ ,("iges","model/iges")
+ ,("igs","model/iges")
+ ,("iii","application/x-iphone")
+ ,("inp","chemical/x-gamess-input")
+ ,("ins","application/x-internet-signup")
+ ,("iso","application/x-iso9660-image")
+ ,("isp","application/x-internet-signup")
+ ,("ist","chemical/x-isostar")
+ ,("istr","chemical/x-isostar")
+ ,("jad","text/vnd.sun.j2me.app-descriptor")
+ ,("jar","application/java-archive")
+ ,("java","text/x-java")
+ ,("jdx","chemical/x-jcamp-dx")
+ ,("jmz","application/x-jmol")
+ ,("jng","image/x-jng")
+ ,("jnlp","application/x-java-jnlp-file")
+ ,("jpe","image/jpeg")
+ ,("jpeg","image/jpeg")
+ ,("jpg","image/jpeg")
+ ,("js","application/x-javascript")
+ ,("kar","audio/midi")
+ ,("key","application/pgp-keys")
+ ,("kil","application/x-killustrator")
+ ,("kin","chemical/x-kinemage")
+ ,("kml","application/vnd.google-earth.kml+xml")
+ ,("kmz","application/vnd.google-earth.kmz")
+ ,("kpr","application/x-kpresenter")
+ ,("kpt","application/x-kpresenter")
+ ,("ksp","application/x-kspread")
+ ,("kwd","application/x-kword")
+ ,("kwt","application/x-kword")
+ ,("latex","application/x-latex")
+ ,("lha","application/x-lha")
+ ,("lhs","text/x-literate-haskell")
+ ,("lsf","video/x-la-asf")
+ ,("lsx","video/x-la-asf")
+ ,("ltx","text/x-tex")
+ ,("lyx","application/x-lyx")
+ ,("lzh","application/x-lzh")
+ ,("lzx","application/x-lzx")
+ ,("m3u","audio/mpegurl")
+ ,("m4a","audio/mpeg")
+ ,("maker","application/x-maker")
+ ,("man","application/x-troff-man")
+ ,("mcif","chemical/x-mmcif")
+ ,("mcm","chemical/x-macmolecule")
+ ,("mdb","application/msaccess")
+ ,("me","application/x-troff-me")
+ ,("mesh","model/mesh")
+ ,("mid","audio/midi")
+ ,("midi","audio/midi")
+ ,("mif","application/x-mif")
+ ,("mm","application/x-freemind")
+ ,("mmd","chemical/x-macromodel-input")
+ ,("mmf","application/vnd.smaf")
+ ,("mml","text/mathml")
+ ,("mmod","chemical/x-macromodel-input")
+ ,("mng","video/x-mng")
+ ,("moc","text/x-moc")
+ ,("mol","chemical/x-mdl-molfile")
+ ,("mol2","chemical/x-mol2")
+ ,("moo","chemical/x-mopac-out")
+ ,("mop","chemical/x-mopac-input")
+ ,("mopcrt","chemical/x-mopac-input")
+ ,("mov","video/quicktime")
+ ,("movie","video/x-sgi-movie")
+ ,("mp2","audio/mpeg")
+ ,("mp3","audio/mpeg")
+ ,("mp4","video/mp4")
+ ,("mpc","chemical/x-mopac-input")
+ ,("mpe","video/mpeg")
+ ,("mpeg","video/mpeg")
+ ,("mpega","audio/mpeg")
+ ,("mpg","video/mpeg")
+ ,("mpga","audio/mpeg")
+ ,("ms","application/x-troff-ms")
+ ,("msh","model/mesh")
+ ,("msi","application/x-msi")
+ ,("mvb","chemical/x-mopac-vib")
+ ,("mxu","video/vnd.mpegurl")
+ ,("nb","application/mathematica")
+ ,("nc","application/x-netcdf")
+ ,("nwc","application/x-nwc")
+ ,("o","application/x-object")
+ ,("oda","application/oda")
+ ,("odb","application/vnd.oasis.opendocument.database")
+ ,("odc","application/vnd.oasis.opendocument.chart")
+ ,("odf","application/vnd.oasis.opendocument.formula")
+ ,("odg","application/vnd.oasis.opendocument.graphics")
+ ,("odi","application/vnd.oasis.opendocument.image")
+ ,("odm","application/vnd.oasis.opendocument.text-master")
+ ,("odp","application/vnd.oasis.opendocument.presentation")
+ ,("ods","application/vnd.oasis.opendocument.spreadsheet")
+ ,("odt","application/vnd.oasis.opendocument.text")
+ ,("oga","audio/ogg")
+ ,("ogg","application/ogg")
+ ,("ogv","video/ogg")
+ ,("ogx","application/ogg")
+ ,("old","application/x-trash")
+ ,("otg","application/vnd.oasis.opendocument.graphics-template")
+ ,("oth","application/vnd.oasis.opendocument.text-web")
+ ,("otp","application/vnd.oasis.opendocument.presentation-template")
+ ,("ots","application/vnd.oasis.opendocument.spreadsheet-template")
+ ,("ott","application/vnd.oasis.opendocument.text-template")
+ ,("oza","application/x-oz-application")
+ ,("p","text/x-pascal")
+ ,("p7r","application/x-pkcs7-certreqresp")
+ ,("pac","application/x-ns-proxy-autoconfig")
+ ,("pas","text/x-pascal")
+ ,("pat","image/x-coreldrawpattern")
+ ,("patch","text/x-diff")
+ ,("pbm","image/x-portable-bitmap")
+ ,("pcap","application/cap")
+ ,("pcf","application/x-font")
+ ,("pcf.Z","application/x-font")
+ ,("pcx","image/pcx")
+ ,("pdb","chemical/x-pdb")
+ ,("pdf","application/pdf")
+ ,("pfa","application/x-font")
+ ,("pfb","application/x-font")
+ ,("pgm","image/x-portable-graymap")
+ ,("pgn","application/x-chess-pgn")
+ ,("pgp","application/pgp-signature")
+ ,("php","application/x-httpd-php")
+ ,("php3","application/x-httpd-php3")
+ ,("php3p","application/x-httpd-php3-preprocessed")
+ ,("php4","application/x-httpd-php4")
+ ,("phps","application/x-httpd-php-source")
+ ,("pht","application/x-httpd-php")
+ ,("phtml","application/x-httpd-php")
+ ,("pk","application/x-tex-pk")
+ ,("pl","text/x-perl")
+ ,("pls","audio/x-scpls")
+ ,("pm","text/x-perl")
+ ,("png","image/png")
+ ,("pnm","image/x-portable-anymap")
+ ,("pot","text/plain")
+ ,("ppm","image/x-portable-pixmap")
+ ,("pps","application/vnd.ms-powerpoint")
+ ,("ppt","application/vnd.ms-powerpoint")
+ ,("prf","application/pics-rules")
+ ,("prt","chemical/x-ncbi-asn1-ascii")
+ ,("ps","application/postscript")
+ ,("psd","image/x-photoshop")
+ ,("py","text/x-python")
+ ,("pyc","application/x-python-code")
+ ,("pyo","application/x-python-code")
+ ,("qt","video/quicktime")
+ ,("qtl","application/x-quicktimeplayer")
+ ,("ra","audio/x-pn-realaudio")
+ ,("ram","audio/x-pn-realaudio")
+ ,("rar","application/rar")
+ ,("ras","image/x-cmu-raster")
+ ,("rd","chemical/x-mdl-rdfile")
+ ,("rdf","application/rdf+xml")
+ ,("rgb","image/x-rgb")
+ ,("rhtml","application/x-httpd-eruby")
+ ,("rm","audio/x-pn-realaudio")
+ ,("roff","application/x-troff")
+ ,("ros","chemical/x-rosdal")
+ ,("rpm","application/x-redhat-package-manager")
+ ,("rss","application/rss+xml")
+ ,("rtf","application/rtf")
+ ,("rtx","text/richtext")
+ ,("rxn","chemical/x-mdl-rxnfile")
+ ,("sct","text/scriptlet")
+ ,("sd","chemical/x-mdl-sdfile")
+ ,("sd2","audio/x-sd2")
+ ,("sda","application/vnd.stardivision.draw")
+ ,("sdc","application/vnd.stardivision.calc")
+ ,("sdd","application/vnd.stardivision.impress")
+ ,("sdf","application/vnd.stardivision.math")
+ ,("sds","application/vnd.stardivision.chart")
+ ,("sdw","application/vnd.stardivision.writer")
+ ,("ser","application/java-serialized-object")
+ ,("sgf","application/x-go-sgf")
+ ,("sgl","application/vnd.stardivision.writer-global")
+ ,("sh","application/x-sh")
+ ,("shar","application/x-shar")
+ ,("shtml","text/html")
+ ,("sid","audio/prs.sid")
+ ,("sik","application/x-trash")
+ ,("silo","model/mesh")
+ ,("sis","application/vnd.symbian.install")
+ ,("sisx","x-epoc/x-sisx-app")
+ ,("sit","application/x-stuffit")
+ ,("sitx","application/x-stuffit")
+ ,("skd","application/x-koan")
+ ,("skm","application/x-koan")
+ ,("skp","application/x-koan")
+ ,("skt","application/x-koan")
+ ,("smi","application/smil")
+ ,("smil","application/smil")
+ ,("snd","audio/basic")
+ ,("spc","chemical/x-galactic-spc")
+ ,("spl","application/futuresplash")
+ ,("spx","audio/ogg")
+ ,("src","application/x-wais-source")
+ ,("stc","application/vnd.sun.xml.calc.template")
+ ,("std","application/vnd.sun.xml.draw.template")
+ ,("sti","application/vnd.sun.xml.impress.template")
+ ,("stl","application/vnd.ms-pki.stl")
+ ,("stw","application/vnd.sun.xml.writer.template")
+ ,("sty","text/x-tex")
+ ,("sv4cpio","application/x-sv4cpio")
+ ,("sv4crc","application/x-sv4crc")
+ ,("svg","image/svg+xml")
+ ,("svgz","image/svg+xml")
+ ,("sw","chemical/x-swissprot")
+ ,("swf","application/x-shockwave-flash")
+ ,("swfl","application/x-shockwave-flash")
+ ,("sxc","application/vnd.sun.xml.calc")
+ ,("sxd","application/vnd.sun.xml.draw")
+ ,("sxg","application/vnd.sun.xml.writer.global")
+ ,("sxi","application/vnd.sun.xml.impress")
+ ,("sxm","application/vnd.sun.xml.math")
+ ,("sxw","application/vnd.sun.xml.writer")
+ ,("t","application/x-troff")
+ ,("tar","application/x-tar")
+ ,("taz","application/x-gtar")
+ ,("tcl","application/x-tcl")
+ ,("tex","text/x-tex")
+ ,("texi","application/x-texinfo")
+ ,("texinfo","application/x-texinfo")
+ ,("text","text/plain")
+ ,("tgf","chemical/x-mdl-tgf")
+ ,("tgz","application/x-gtar")
+ ,("tif","image/tiff")
+ ,("tiff","image/tiff")
+ ,("tk","text/x-tcl")
+ ,("tm","text/texmacs")
+ ,("torrent","application/x-bittorrent")
+ ,("tr","application/x-troff")
+ ,("ts","text/texmacs")
+ ,("tsp","application/dsptype")
+ ,("tsv","text/tab-separated-values")
+ ,("txt","text/plain")
+ ,("udeb","application/x-debian-package")
+ ,("uls","text/iuls")
+ ,("ustar","application/x-ustar")
+ ,("val","chemical/x-ncbi-asn1-binary")
+ ,("vcd","application/x-cdlink")
+ ,("vcf","text/x-vcard")
+ ,("vcs","text/x-vcalendar")
+ ,("vmd","chemical/x-vmd")
+ ,("vms","chemical/x-vamas-iso14976")
+ ,("vrm","x-world/x-vrml")
+ ,("vrml","model/vrml")
+ ,("vsd","application/vnd.visio")
+ ,("wad","application/x-doom")
+ ,("wav","audio/x-wav")
+ ,("wax","audio/x-ms-wax")
+ ,("wbmp","image/vnd.wap.wbmp")
+ ,("wbxml","application/vnd.wap.wbxml")
+ ,("wk","application/x-123")
+ ,("wm","video/x-ms-wm")
+ ,("wma","audio/x-ms-wma")
+ ,("wmd","application/x-ms-wmd")
+ ,("wml","text/vnd.wap.wml")
+ ,("wmlc","application/vnd.wap.wmlc")
+ ,("wmls","text/vnd.wap.wmlscript")
+ ,("wmlsc","application/vnd.wap.wmlscriptc")
+ ,("wmv","video/x-ms-wmv")
+ ,("wmx","video/x-ms-wmx")
+ ,("wmz","application/x-ms-wmz")
+ ,("wp5","application/wordperfect5.1")
+ ,("wpd","application/wordperfect")
+ ,("wrl","model/vrml")
+ ,("wsc","text/scriptlet")
+ ,("wvx","video/x-ms-wvx")
+ ,("wz","application/x-wingz")
+ ,("xbm","image/x-xbitmap")
+ ,("xcf","application/x-xcf")
+ ,("xht","application/xhtml+xml")
+ ,("xhtml","application/xhtml+xml")
+ ,("xlb","application/vnd.ms-excel")
+ ,("xls","application/vnd.ms-excel")
+ ,("xlt","application/vnd.ms-excel")
+ ,("xml","application/xml")
+ ,("xpi","application/x-xpinstall")
+ ,("xpm","image/x-xpixmap")
+ ,("xsl","application/xml")
+ ,("xtel","chemical/x-xtel")
+ ,("xul","application/vnd.mozilla.xul+xml")
+ ,("xwd","image/x-xwindowdump")
+ ,("xyz","chemical/x-xyz")
+ ,("zip","application/zip")
+ ,("zmt","chemical/x-mopac-input")
+ ]
+
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs
index 5e5c69206..b22012070 100644
--- a/src/Text/Pandoc/Shared.hs
+++ b/src/Text/Pandoc/Shared.hs
@@ -68,7 +68,6 @@ module Text.Pandoc.Shared (
inDirectory,
findDataFile,
readDataFile,
- getMimeType
) where
import Text.Pandoc.Definition
@@ -80,10 +79,9 @@ import Data.List ( find, isPrefixOf, intercalate )
import Network.URI ( isAllowedInURI, escapeURIString, unEscapeString )
import Codec.Binary.UTF8.String ( encodeString, decodeString )
import System.Directory
-import System.FilePath ( (</>), takeExtension )
+import System.FilePath ( (</>) )
import Data.Generics (Typeable, Data)
import qualified Control.Monad.State as S
-import qualified Data.Map as M
import Paths_pandoc (getDataFileName)
--
@@ -555,451 +553,3 @@ findDataFile (Just u) f = do
-- Cabal data directory.
readDataFile :: Maybe FilePath -> FilePath -> IO String
readDataFile userDir fname = findDataFile userDir fname >>= UTF8.readFile
-
--- | Determine mime type appropriate for file path.
-getMimeType :: FilePath -> Maybe String
-getMimeType f = M.lookup (map toLower $ drop 1 $ takeExtension f) mimeTypes
- where mimeTypes = M.fromList -- List borrowed from happstack-server.
- [("gz","application/x-gzip")
- ,("cabal","application/x-cabal")
- ,("%","application/x-trash")
- ,("323","text/h323")
- ,("3gp","video/3gpp")
- ,("7z","application/x-7z-compressed")
- ,("abw","application/x-abiword")
- ,("ai","application/postscript")
- ,("aif","audio/x-aiff")
- ,("aifc","audio/x-aiff")
- ,("aiff","audio/x-aiff")
- ,("alc","chemical/x-alchemy")
- ,("art","image/x-jg")
- ,("asc","text/plain")
- ,("asf","video/x-ms-asf")
- ,("asn","chemical/x-ncbi-asn1")
- ,("aso","chemical/x-ncbi-asn1-binary")
- ,("asx","video/x-ms-asf")
- ,("atom","application/atom")
- ,("atomcat","application/atomcat+xml")
- ,("atomsrv","application/atomserv+xml")
- ,("au","audio/basic")
- ,("avi","video/x-msvideo")
- ,("b","chemical/x-molconn-Z")
- ,("bak","application/x-trash")
- ,("bat","application/x-msdos-program")
- ,("bcpio","application/x-bcpio")
- ,("bib","text/x-bibtex")
- ,("bin","application/octet-stream")
- ,("bmp","image/x-ms-bmp")
- ,("boo","text/x-boo")
- ,("book","application/x-maker")
- ,("bsd","chemical/x-crossfire")
- ,("c","text/x-csrc")
- ,("c++","text/x-c++src")
- ,("c3d","chemical/x-chem3d")
- ,("cab","application/x-cab")
- ,("cac","chemical/x-cache")
- ,("cache","chemical/x-cache")
- ,("cap","application/cap")
- ,("cascii","chemical/x-cactvs-binary")
- ,("cat","application/vnd.ms-pki.seccat")
- ,("cbin","chemical/x-cactvs-binary")
- ,("cbr","application/x-cbr")
- ,("cbz","application/x-cbz")
- ,("cc","text/x-c++src")
- ,("cdf","application/x-cdf")
- ,("cdr","image/x-coreldraw")
- ,("cdt","image/x-coreldrawtemplate")
- ,("cdx","chemical/x-cdx")
- ,("cdy","application/vnd.cinderella")
- ,("cef","chemical/x-cxf")
- ,("cer","chemical/x-cerius")
- ,("chm","chemical/x-chemdraw")
- ,("chrt","application/x-kchart")
- ,("cif","chemical/x-cif")
- ,("class","application/java-vm")
- ,("cls","text/x-tex")
- ,("cmdf","chemical/x-cmdf")
- ,("cml","chemical/x-cml")
- ,("cod","application/vnd.rim.cod")
- ,("com","application/x-msdos-program")
- ,("cpa","chemical/x-compass")
- ,("cpio","application/x-cpio")
- ,("cpp","text/x-c++src")
- ,("cpt","application/mac-compactpro")
- ,("crl","application/x-pkcs7-crl")
- ,("crt","application/x-x509-ca-cert")
- ,("csf","chemical/x-cache-csf")
- ,("csh","application/x-csh")
- ,("csm","chemical/x-csml")
- ,("csml","chemical/x-csml")
- ,("css","text/css")
- ,("csv","text/csv")
- ,("ctab","chemical/x-cactvs-binary")
- ,("ctx","chemical/x-ctx")
- ,("cu","application/cu-seeme")
- ,("cub","chemical/x-gaussian-cube")
- ,("cxf","chemical/x-cxf")
- ,("cxx","text/x-c++src")
- ,("d","text/x-dsrc")
- ,("dat","chemical/x-mopac-input")
- ,("dcr","application/x-director")
- ,("deb","application/x-debian-package")
- ,("dif","video/dv")
- ,("diff","text/x-diff")
- ,("dir","application/x-director")
- ,("djv","image/vnd.djvu")
- ,("djvu","image/vnd.djvu")
- ,("dl","video/dl")
- ,("dll","application/x-msdos-program")
- ,("dmg","application/x-apple-diskimage")
- ,("dms","application/x-dms")
- ,("doc","application/msword")
- ,("dot","application/msword")
- ,("dv","video/dv")
- ,("dvi","application/x-dvi")
- ,("dx","chemical/x-jcamp-dx")
- ,("dxr","application/x-director")
- ,("emb","chemical/x-embl-dl-nucleotide")
- ,("embl","chemical/x-embl-dl-nucleotide")
- ,("eml","message/rfc822")
- ,("ent","chemical/x-ncbi-asn1-ascii")
- ,("eps","application/postscript")
- ,("etx","text/x-setext")
- ,("exe","application/x-msdos-program")
- ,("ez","application/andrew-inset")
- ,("fb","application/x-maker")
- ,("fbdoc","application/x-maker")
- ,("fch","chemical/x-gaussian-checkpoint")
- ,("fchk","chemical/x-gaussian-checkpoint")
- ,("fig","application/x-xfig")
- ,("flac","application/x-flac")
- ,("fli","video/fli")
- ,("fm","application/x-maker")
- ,("frame","application/x-maker")
- ,("frm","application/x-maker")
- ,("gal","chemical/x-gaussian-log")
- ,("gam","chemical/x-gamess-input")
- ,("gamin","chemical/x-gamess-input")
- ,("gau","chemical/x-gaussian-input")
- ,("gcd","text/x-pcs-gcd")
- ,("gcf","application/x-graphing-calculator")
- ,("gcg","chemical/x-gcg8-sequence")
- ,("gen","chemical/x-genbank")
- ,("gf","application/x-tex-gf")
- ,("gif","image/gif")
- ,("gjc","chemical/x-gaussian-input")
- ,("gjf","chemical/x-gaussian-input")
- ,("gl","video/gl")
- ,("gnumeric","application/x-gnumeric")
- ,("gpt","chemical/x-mopac-graph")
- ,("gsf","application/x-font")
- ,("gsm","audio/x-gsm")
- ,("gtar","application/x-gtar")
- ,("h","text/x-chdr")
- ,("h++","text/x-c++hdr")
- ,("hdf","application/x-hdf")
- ,("hh","text/x-c++hdr")
- ,("hin","chemical/x-hin")
- ,("hpp","text/x-c++hdr")
- ,("hqx","application/mac-binhex40")
- ,("hs","text/x-haskell")
- ,("hta","application/hta")
- ,("htc","text/x-component")
- ,("htm","text/html")
- ,("html","text/html")
- ,("hxx","text/x-c++hdr")
- ,("ica","application/x-ica")
- ,("ice","x-conference/x-cooltalk")
- ,("ico","image/x-icon")
- ,("ics","text/calendar")
- ,("icz","text/calendar")
- ,("ief","image/ief")
- ,("iges","model/iges")
- ,("igs","model/iges")
- ,("iii","application/x-iphone")
- ,("inp","chemical/x-gamess-input")
- ,("ins","application/x-internet-signup")
- ,("iso","application/x-iso9660-image")
- ,("isp","application/x-internet-signup")
- ,("ist","chemical/x-isostar")
- ,("istr","chemical/x-isostar")
- ,("jad","text/vnd.sun.j2me.app-descriptor")
- ,("jar","application/java-archive")
- ,("java","text/x-java")
- ,("jdx","chemical/x-jcamp-dx")
- ,("jmz","application/x-jmol")
- ,("jng","image/x-jng")
- ,("jnlp","application/x-java-jnlp-file")
- ,("jpe","image/jpeg")
- ,("jpeg","image/jpeg")
- ,("jpg","image/jpeg")
- ,("js","application/x-javascript")
- ,("kar","audio/midi")
- ,("key","application/pgp-keys")
- ,("kil","application/x-killustrator")
- ,("kin","chemical/x-kinemage")
- ,("kml","application/vnd.google-earth.kml+xml")
- ,("kmz","application/vnd.google-earth.kmz")
- ,("kpr","application/x-kpresenter")
- ,("kpt","application/x-kpresenter")
- ,("ksp","application/x-kspread")
- ,("kwd","application/x-kword")
- ,("kwt","application/x-kword")
- ,("latex","application/x-latex")
- ,("lha","application/x-lha")
- ,("lhs","text/x-literate-haskell")
- ,("lsf","video/x-la-asf")
- ,("lsx","video/x-la-asf")
- ,("ltx","text/x-tex")
- ,("lyx","application/x-lyx")
- ,("lzh","application/x-lzh")
- ,("lzx","application/x-lzx")
- ,("m3u","audio/mpegurl")
- ,("m4a","audio/mpeg")
- ,("maker","application/x-maker")
- ,("man","application/x-troff-man")
- ,("mcif","chemical/x-mmcif")
- ,("mcm","chemical/x-macmolecule")
- ,("mdb","application/msaccess")
- ,("me","application/x-troff-me")
- ,("mesh","model/mesh")
- ,("mid","audio/midi")
- ,("midi","audio/midi")
- ,("mif","application/x-mif")
- ,("mm","application/x-freemind")
- ,("mmd","chemical/x-macromodel-input")
- ,("mmf","application/vnd.smaf")
- ,("mml","text/mathml")
- ,("mmod","chemical/x-macromodel-input")
- ,("mng","video/x-mng")
- ,("moc","text/x-moc")
- ,("mol","chemical/x-mdl-molfile")
- ,("mol2","chemical/x-mol2")
- ,("moo","chemical/x-mopac-out")
- ,("mop","chemical/x-mopac-input")
- ,("mopcrt","chemical/x-mopac-input")
- ,("mov","video/quicktime")
- ,("movie","video/x-sgi-movie")
- ,("mp2","audio/mpeg")
- ,("mp3","audio/mpeg")
- ,("mp4","video/mp4")
- ,("mpc","chemical/x-mopac-input")
- ,("mpe","video/mpeg")
- ,("mpeg","video/mpeg")
- ,("mpega","audio/mpeg")
- ,("mpg","video/mpeg")
- ,("mpga","audio/mpeg")
- ,("ms","application/x-troff-ms")
- ,("msh","model/mesh")
- ,("msi","application/x-msi")
- ,("mvb","chemical/x-mopac-vib")
- ,("mxu","video/vnd.mpegurl")
- ,("nb","application/mathematica")
- ,("nc","application/x-netcdf")
- ,("nwc","application/x-nwc")
- ,("o","application/x-object")
- ,("oda","application/oda")
- ,("odb","application/vnd.oasis.opendocument.database")
- ,("odc","application/vnd.oasis.opendocument.chart")
- ,("odf","application/vnd.oasis.opendocument.formula")
- ,("odg","application/vnd.oasis.opendocument.graphics")
- ,("odi","application/vnd.oasis.opendocument.image")
- ,("odm","application/vnd.oasis.opendocument.text-master")
- ,("odp","application/vnd.oasis.opendocument.presentation")
- ,("ods","application/vnd.oasis.opendocument.spreadsheet")
- ,("odt","application/vnd.oasis.opendocument.text")
- ,("oga","audio/ogg")
- ,("ogg","application/ogg")
- ,("ogv","video/ogg")
- ,("ogx","application/ogg")
- ,("old","application/x-trash")
- ,("otg","application/vnd.oasis.opendocument.graphics-template")
- ,("oth","application/vnd.oasis.opendocument.text-web")
- ,("otp","application/vnd.oasis.opendocument.presentation-template")
- ,("ots","application/vnd.oasis.opendocument.spreadsheet-template")
- ,("ott","application/vnd.oasis.opendocument.text-template")
- ,("oza","application/x-oz-application")
- ,("p","text/x-pascal")
- ,("p7r","application/x-pkcs7-certreqresp")
- ,("pac","application/x-ns-proxy-autoconfig")
- ,("pas","text/x-pascal")
- ,("pat","image/x-coreldrawpattern")
- ,("patch","text/x-diff")
- ,("pbm","image/x-portable-bitmap")
- ,("pcap","application/cap")
- ,("pcf","application/x-font")
- ,("pcf.Z","application/x-font")
- ,("pcx","image/pcx")
- ,("pdb","chemical/x-pdb")
- ,("pdf","application/pdf")
- ,("pfa","application/x-font")
- ,("pfb","application/x-font")
- ,("pgm","image/x-portable-graymap")
- ,("pgn","application/x-chess-pgn")
- ,("pgp","application/pgp-signature")
- ,("php","application/x-httpd-php")
- ,("php3","application/x-httpd-php3")
- ,("php3p","application/x-httpd-php3-preprocessed")
- ,("php4","application/x-httpd-php4")
- ,("phps","application/x-httpd-php-source")
- ,("pht","application/x-httpd-php")
- ,("phtml","application/x-httpd-php")
- ,("pk","application/x-tex-pk")
- ,("pl","text/x-perl")
- ,("pls","audio/x-scpls")
- ,("pm","text/x-perl")
- ,("png","image/png")
- ,("pnm","image/x-portable-anymap")
- ,("pot","text/plain")
- ,("ppm","image/x-portable-pixmap")
- ,("pps","application/vnd.ms-powerpoint")
- ,("ppt","application/vnd.ms-powerpoint")
- ,("prf","application/pics-rules")
- ,("prt","chemical/x-ncbi-asn1-ascii")
- ,("ps","application/postscript")
- ,("psd","image/x-photoshop")
- ,("py","text/x-python")
- ,("pyc","application/x-python-code")
- ,("pyo","application/x-python-code")
- ,("qt","video/quicktime")
- ,("qtl","application/x-quicktimeplayer")
- ,("ra","audio/x-pn-realaudio")
- ,("ram","audio/x-pn-realaudio")
- ,("rar","application/rar")
- ,("ras","image/x-cmu-raster")
- ,("rd","chemical/x-mdl-rdfile")
- ,("rdf","application/rdf+xml")
- ,("rgb","image/x-rgb")
- ,("rhtml","application/x-httpd-eruby")
- ,("rm","audio/x-pn-realaudio")
- ,("roff","application/x-troff")
- ,("ros","chemical/x-rosdal")
- ,("rpm","application/x-redhat-package-manager")
- ,("rss","application/rss+xml")
- ,("rtf","application/rtf")
- ,("rtx","text/richtext")
- ,("rxn","chemical/x-mdl-rxnfile")
- ,("sct","text/scriptlet")
- ,("sd","chemical/x-mdl-sdfile")
- ,("sd2","audio/x-sd2")
- ,("sda","application/vnd.stardivision.draw")
- ,("sdc","application/vnd.stardivision.calc")
- ,("sdd","application/vnd.stardivision.impress")
- ,("sdf","application/vnd.stardivision.math")
- ,("sds","application/vnd.stardivision.chart")
- ,("sdw","application/vnd.stardivision.writer")
- ,("ser","application/java-serialized-object")
- ,("sgf","application/x-go-sgf")
- ,("sgl","application/vnd.stardivision.writer-global")
- ,("sh","application/x-sh")
- ,("shar","application/x-shar")
- ,("shtml","text/html")
- ,("sid","audio/prs.sid")
- ,("sik","application/x-trash")
- ,("silo","model/mesh")
- ,("sis","application/vnd.symbian.install")
- ,("sisx","x-epoc/x-sisx-app")
- ,("sit","application/x-stuffit")
- ,("sitx","application/x-stuffit")
- ,("skd","application/x-koan")
- ,("skm","application/x-koan")
- ,("skp","application/x-koan")
- ,("skt","application/x-koan")
- ,("smi","application/smil")
- ,("smil","application/smil")
- ,("snd","audio/basic")
- ,("spc","chemical/x-galactic-spc")
- ,("spl","application/futuresplash")
- ,("spx","audio/ogg")
- ,("src","application/x-wais-source")
- ,("stc","application/vnd.sun.xml.calc.template")
- ,("std","application/vnd.sun.xml.draw.template")
- ,("sti","application/vnd.sun.xml.impress.template")
- ,("stl","application/vnd.ms-pki.stl")
- ,("stw","application/vnd.sun.xml.writer.template")
- ,("sty","text/x-tex")
- ,("sv4cpio","application/x-sv4cpio")
- ,("sv4crc","application/x-sv4crc")
- ,("svg","image/svg+xml")
- ,("svgz","image/svg+xml")
- ,("sw","chemical/x-swissprot")
- ,("swf","application/x-shockwave-flash")
- ,("swfl","application/x-shockwave-flash")
- ,("sxc","application/vnd.sun.xml.calc")
- ,("sxd","application/vnd.sun.xml.draw")
- ,("sxg","application/vnd.sun.xml.writer.global")
- ,("sxi","application/vnd.sun.xml.impress")
- ,("sxm","application/vnd.sun.xml.math")
- ,("sxw","application/vnd.sun.xml.writer")
- ,("t","application/x-troff")
- ,("tar","application/x-tar")
- ,("taz","application/x-gtar")
- ,("tcl","application/x-tcl")
- ,("tex","text/x-tex")
- ,("texi","application/x-texinfo")
- ,("texinfo","application/x-texinfo")
- ,("text","text/plain")
- ,("tgf","chemical/x-mdl-tgf")
- ,("tgz","application/x-gtar")
- ,("tif","image/tiff")
- ,("tiff","image/tiff")
- ,("tk","text/x-tcl")
- ,("tm","text/texmacs")
- ,("torrent","application/x-bittorrent")
- ,("tr","application/x-troff")
- ,("ts","text/texmacs")
- ,("tsp","application/dsptype")
- ,("tsv","text/tab-separated-values")
- ,("txt","text/plain")
- ,("udeb","application/x-debian-package")
- ,("uls","text/iuls")
- ,("ustar","application/x-ustar")
- ,("val","chemical/x-ncbi-asn1-binary")
- ,("vcd","application/x-cdlink")
- ,("vcf","text/x-vcard")
- ,("vcs","text/x-vcalendar")
- ,("vmd","chemical/x-vmd")
- ,("vms","chemical/x-vamas-iso14976")
- ,("vrm","x-world/x-vrml")
- ,("vrml","model/vrml")
- ,("vsd","application/vnd.visio")
- ,("wad","application/x-doom")
- ,("wav","audio/x-wav")
- ,("wax","audio/x-ms-wax")
- ,("wbmp","image/vnd.wap.wbmp")
- ,("wbxml","application/vnd.wap.wbxml")
- ,("wk","application/x-123")
- ,("wm","video/x-ms-wm")
- ,("wma","audio/x-ms-wma")
- ,("wmd","application/x-ms-wmd")
- ,("wml","text/vnd.wap.wml")
- ,("wmlc","application/vnd.wap.wmlc")
- ,("wmls","text/vnd.wap.wmlscript")
- ,("wmlsc","application/vnd.wap.wmlscriptc")
- ,("wmv","video/x-ms-wmv")
- ,("wmx","video/x-ms-wmx")
- ,("wmz","application/x-ms-wmz")
- ,("wp5","application/wordperfect5.1")
- ,("wpd","application/wordperfect")
- ,("wrl","model/vrml")
- ,("wsc","text/scriptlet")
- ,("wvx","video/x-ms-wvx")
- ,("wz","application/x-wingz")
- ,("xbm","image/x-xbitmap")
- ,("xcf","application/x-xcf")
- ,("xht","application/xhtml+xml")
- ,("xhtml","application/xhtml+xml")
- ,("xlb","application/vnd.ms-excel")
- ,("xls","application/vnd.ms-excel")
- ,("xlt","application/vnd.ms-excel")
- ,("xml","application/xml")
- ,("xpi","application/x-xpinstall")
- ,("xpm","image/x-xpixmap")
- ,("xsl","application/xml")
- ,("xtel","chemical/x-xtel")
- ,("xul","application/vnd.mozilla.xul+xml")
- ,("xwd","image/x-xwindowdump")
- ,("xyz","chemical/x-xyz")
- ,("zip","application/zip")
- ,("zmt","chemical/x-mopac-input")
- ]
diff --git a/src/Text/Pandoc/Writers/ODT.hs b/src/Text/Pandoc/Writers/ODT.hs
index 4cdfed6b8..f8030965c 100644
--- a/src/Text/Pandoc/Writers/ODT.hs
+++ b/src/Text/Pandoc/Writers/ODT.hs
@@ -36,7 +36,8 @@ import Data.ByteString.Lazy.UTF8 ( fromString )
import Codec.Archive.Zip
import System.Time
import Paths_pandoc ( getDataFileName )
-import Text.Pandoc.Shared ( WriterOptions(..), getMimeType )
+import Text.Pandoc.Shared ( WriterOptions(..) )
+import Text.Pandoc.MIME ( getMimeType )
import Text.Pandoc.Definition
import Text.Pandoc.Generic
import Text.Pandoc.Writers.OpenDocument ( writeOpenDocument )