diff options
| author | Albert Krewinkel <[email protected]> | 2022-09-04 23:30:57 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-09-04 14:30:57 -0700 |
| commit | b9a7de32f6bd729266861ca0942cd2471a9ad2c4 (patch) | |
| tree | 58f99fd7a1dcd1af2be280b033285cceca508775 | |
| parent | d5baace0f52b029a4ba6dc88eb63be4a200af09c (diff) | |
T.P.Mime: Base module on package mime-types. (#8277)
The *mime-types* module is a dependency of *http-client* and therefore
already a transitive dependency of pandoc.
| -rw-r--r-- | pandoc.cabal | 1 | ||||
| -rw-r--r-- | src/Text/Pandoc/MIME.hs | 232 |
2 files changed, 8 insertions, 225 deletions
diff --git a/pandoc.cabal b/pandoc.cabal index 4aab9aa91..e0becb723 100644 --- a/pandoc.cabal +++ b/pandoc.cabal @@ -502,6 +502,7 @@ library ipynb >= 0.2 && < 0.3, jira-wiki-markup >= 1.4 && < 1.5, lpeg >= 1.0.1 && < 1.1, + mime-types >= 0.1 && < 0.2, mtl >= 2.2 && < 2.3, network >= 2.6, network-uri >= 2.6 && < 2.8, diff --git a/src/Text/Pandoc/MIME.hs b/src/Text/Pandoc/MIME.hs index 2f9d554c8..4bb32c241 100644 --- a/src/Text/Pandoc/MIME.hs +++ b/src/Text/Pandoc/MIME.hs @@ -20,8 +20,10 @@ module Text.Pandoc.MIME ( import Data.List (isPrefixOf, isSuffixOf) import qualified Data.Map as M import qualified Data.Text as T +import qualified Data.Text.Encoding as T import Data.Maybe (fromMaybe, listToMaybe) import Data.Tuple (swap) +import qualified Network.Mime import System.FilePath type MimeType = T.Text @@ -81,37 +83,19 @@ getCharset mt = -- Except for first entry, list borrowed from -- <https://github.com/Happstack/happstack-server/blob/master/src/Happstack/Server/FileServe/BuildingBlocks.hs happstack-server> mimeTypesList :: [(T.Text, MimeType)] -mimeTypesList = - [("cpt","image/x-corelphotopaint") - ,("gz","application/x-gzip") - ,("cabal","application/x-cabal") - ,("%","application/x-trash") +mimeTypesList = M.toList (M.map T.decodeUtf8 Network.Mime.defaultMimeMap) ++ + [("%","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") @@ -120,84 +104,53 @@ mimeTypesList = ,("c++","text/x-c++src") ,("c3d","chemical/x-chem3d") ,("cab","application/x-cab") + ,("cabal","application/x-cabal") ,("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") + ,("cpt","image/x-corelphotopaint") ,("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") ,("emf","image/x-emf") - ,("emz","application/x-msmetafile") - ,("eml","message/rfc822") ,("ent","chemical/x-ncbi-asn1-ascii") - ,("eot","application/vnd.ms-fontobject") ,("eps","application/eps") - ,("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") @@ -213,68 +166,42 @@ mimeTypesList = ,("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") ,("glsl","text/plain") - ,("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") ,("jfif","image/jpeg") - ,("jpg","image/jpeg") - ,("js","application/javascript") - ,("kar","audio/midi") + ,("jmz","application/x-jmol") ,("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") @@ -285,90 +212,43 @@ mimeTypesList = ,("lzx","application/x-lzx") ,("m3u","audio/mpegurl") ,("m4a","audio/mpeg") - ,("m4v","video/x-m4v") ,("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") - ,("mkv","video/x-matroska") ,("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") ,("opus","audio/ogg") - ,("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") ,("otf","font/otf") - ,("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") @@ -381,58 +261,29 @@ mimeTypesList = ,("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") @@ -440,109 +291,40 @@ mimeTypesList = ,("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") - -- removed for now, since it causes problems with - -- extensionFromMimeType: see #2183. - -- ,("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") ,("ttf","font/ttf") - ,("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") ,("vs","text/plain") - ,("vsd","application/vnd.visio") ,("vtt","text/vtt") - ,("wad","application/x-doom") - ,("wav","audio/x-wav") - ,("wax","audio/x-ms-wax") - ,("wbmp","image/vnd.wap.wbmp") - ,("wbxml","application/vnd.wap.wbxml") - ,("webm","video/webm") - ,("webp","image/webp") ,("wk","application/x-123") - ,("wm","video/x-ms-wm") - ,("wma","audio/x-ms-wma") - ,("wmd","application/x-ms-wmd") ,("wmf","image/x-wmf") - ,("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") ,("woff","font/woff") ,("woff2","font/woff2") ,("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","image/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") ] |
