git.iko.soy/typeable/pandoc
on master help sign in
Added unexported Text.Pandoc.MIME.

Moved getMimeType from Text.Pandoc.Shared to Text.Pandoc.MIME, so we won't have an API change.

commit1c28c5308f0991c09af8dcbf4e555ee77fe1dab1 authorJohn MacFarlane <jgm@berkeley.edu> dateTue 19 Jul 2011, 12:01 (15 years ago) parente2aec87
4 files changed+487−452
pandoc.cabal+1 src/Text/Pandoc/MIME.hs+483 src/Text/Pandoc/Shared.hs+1−451 src/Text/Pandoc/Writers/ODT.hs+2−1
pandoc.cabal+1
@@ -262,6 +262,7 @@ Library
262262 Text.Pandoc.Biblio
263263 Other-Modules: Text.Pandoc.XML,
264264 Text.Pandoc.UTF8,
265+ Text.Pandoc.MIME,
265266 Text.Pandoc.UUID,
266267 Paths_pandoc
267268
src/Text/Pandoc/MIME.hsnew file+483
@@ -0,0 +1,483 @@
1+{-
2+Copyright (C) 2011 John MacFarlane <jgm@berkeley.edu>
3+
4+This program is free software; you can redistribute it and/or modify
5+it under the terms of the GNU General Public License as published by
6+the Free Software Foundation; either version 2 of the License, or
7+(at your option) any later version.
8+
9+This program is distributed in the hope that it will be useful,
10+but WITHOUT ANY WARRANTY; without even the implied warranty of
11+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+GNU General Public License for more details.
13+
14+You should have received a copy of the GNU General Public License
15+along with this program; if not, write to the Free Software
16+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17+-}
18+
19+{- |
20+ Module : Text.Pandoc.MIME
21+ Copyright : Copyright (C) 2011 John MacFarlane
22+ License : GNU GPL, version 2 or above
23+
24+ Maintainer : John MacFarlane <jgm@berkeley.edu>
25+ Stability : alpha
26+ Portability : portable
27+
28+Mime type lookup for ODT writer.
29+-}
30+module Text.Pandoc.MIME ( getMimeType )
31+where
32+import System.FilePath
33+import Data.Char ( toLower )
34+import qualified Data.Map as M
35+
36+-- | Determine mime type appropriate for file path.
37+getMimeType :: FilePath -> Maybe String
38+getMimeType f = M.lookup (map toLower $ drop 1 $ takeExtension f) mimeTypes
39+ where mimeTypes = M.fromList -- List borrowed from happstack-server.
40+ [("gz","application/x-gzip")
41+ ,("cabal","application/x-cabal")
42+ ,("%","application/x-trash")
43+ ,("323","text/h323")
44+ ,("3gp","video/3gpp")
45+ ,("7z","application/x-7z-compressed")
46+ ,("abw","application/x-abiword")
47+ ,("ai","application/postscript")
48+ ,("aif","audio/x-aiff")
49+ ,("aifc","audio/x-aiff")
50+ ,("aiff","audio/x-aiff")
51+ ,("alc","chemical/x-alchemy")
52+ ,("art","image/x-jg")
53+ ,("asc","text/plain")
54+ ,("asf","video/x-ms-asf")
55+ ,("asn","chemical/x-ncbi-asn1")
56+ ,("aso","chemical/x-ncbi-asn1-binary")
57+ ,("asx","video/x-ms-asf")
58+ ,("atom","application/atom")
59+ ,("atomcat","application/atomcat+xml")
60+ ,("atomsrv","application/atomserv+xml")
61+ ,("au","audio/basic")
62+ ,("avi","video/x-msvideo")
63+ ,("b","chemical/x-molconn-Z")
64+ ,("bak","application/x-trash")
65+ ,("bat","application/x-msdos-program")
66+ ,("bcpio","application/x-bcpio")
67+ ,("bib","text/x-bibtex")
68+ ,("bin","application/octet-stream")
69+ ,("bmp","image/x-ms-bmp")
70+ ,("boo","text/x-boo")
71+ ,("book","application/x-maker")
72+ ,("bsd","chemical/x-crossfire")
73+ ,("c","text/x-csrc")
74+ ,("c++","text/x-c++src")
75+ ,("c3d","chemical/x-chem3d")
76+ ,("cab","application/x-cab")
77+ ,("cac","chemical/x-cache")
78+ ,("cache","chemical/x-cache")
79+ ,("cap","application/cap")
80+ ,("cascii","chemical/x-cactvs-binary")
81+ ,("cat","application/vnd.ms-pki.seccat")
82+ ,("cbin","chemical/x-cactvs-binary")
83+ ,("cbr","application/x-cbr")
84+ ,("cbz","application/x-cbz")
85+ ,("cc","text/x-c++src")
86+ ,("cdf","application/x-cdf")
87+ ,("cdr","image/x-coreldraw")
88+ ,("cdt","image/x-coreldrawtemplate")
89+ ,("cdx","chemical/x-cdx")
90+ ,("cdy","application/vnd.cinderella")
91+ ,("cef","chemical/x-cxf")
92+ ,("cer","chemical/x-cerius")
93+ ,("chm","chemical/x-chemdraw")
94+ ,("chrt","application/x-kchart")
95+ ,("cif","chemical/x-cif")
96+ ,("class","application/java-vm")
97+ ,("cls","text/x-tex")
98+ ,("cmdf","chemical/x-cmdf")
99+ ,("cml","chemical/x-cml")
100+ ,("cod","application/vnd.rim.cod")
101+ ,("com","application/x-msdos-program")
102+ ,("cpa","chemical/x-compass")
103+ ,("cpio","application/x-cpio")
104+ ,("cpp","text/x-c++src")
105+ ,("cpt","application/mac-compactpro")
106+ ,("crl","application/x-pkcs7-crl")
107+ ,("crt","application/x-x509-ca-cert")
108+ ,("csf","chemical/x-cache-csf")
109+ ,("csh","application/x-csh")
110+ ,("csm","chemical/x-csml")
111+ ,("csml","chemical/x-csml")
112+ ,("css","text/css")
113+ ,("csv","text/csv")
114+ ,("ctab","chemical/x-cactvs-binary")
115+ ,("ctx","chemical/x-ctx")
116+ ,("cu","application/cu-seeme")
117+ ,("cub","chemical/x-gaussian-cube")
118+ ,("cxf","chemical/x-cxf")
119+ ,("cxx","text/x-c++src")
120+ ,("d","text/x-dsrc")
121+ ,("dat","chemical/x-mopac-input")
122+ ,("dcr","application/x-director")
123+ ,("deb","application/x-debian-package")
124+ ,("dif","video/dv")
125+ ,("diff","text/x-diff")
126+ ,("dir","application/x-director")
127+ ,("djv","image/vnd.djvu")
128+ ,("djvu","image/vnd.djvu")
129+ ,("dl","video/dl")
130+ ,("dll","application/x-msdos-program")
131+ ,("dmg","application/x-apple-diskimage")
132+ ,("dms","application/x-dms")
133+ ,("doc","application/msword")
134+ ,("dot","application/msword")
135+ ,("dv","video/dv")
136+ ,("dvi","application/x-dvi")
137+ ,("dx","chemical/x-jcamp-dx")
138+ ,("dxr","application/x-director")
139+ ,("emb","chemical/x-embl-dl-nucleotide")
140+ ,("embl","chemical/x-embl-dl-nucleotide")
141+ ,("eml","message/rfc822")
142+ ,("ent","chemical/x-ncbi-asn1-ascii")
143+ ,("eps","application/postscript")
144+ ,("etx","text/x-setext")
145+ ,("exe","application/x-msdos-program")
146+ ,("ez","application/andrew-inset")
147+ ,("fb","application/x-maker")
148+ ,("fbdoc","application/x-maker")
149+ ,("fch","chemical/x-gaussian-checkpoint")
150+ ,("fchk","chemical/x-gaussian-checkpoint")
151+ ,("fig","application/x-xfig")
152+ ,("flac","application/x-flac")
153+ ,("fli","video/fli")
154+ ,("fm","application/x-maker")
155+ ,("frame","application/x-maker")
156+ ,("frm","application/x-maker")
157+ ,("gal","chemical/x-gaussian-log")
158+ ,("gam","chemical/x-gamess-input")
159+ ,("gamin","chemical/x-gamess-input")
160+ ,("gau","chemical/x-gaussian-input")
161+ ,("gcd","text/x-pcs-gcd")
162+ ,("gcf","application/x-graphing-calculator")
163+ ,("gcg","chemical/x-gcg8-sequence")
164+ ,("gen","chemical/x-genbank")
165+ ,("gf","application/x-tex-gf")
166+ ,("gif","image/gif")
167+ ,("gjc","chemical/x-gaussian-input")
168+ ,("gjf","chemical/x-gaussian-input")
169+ ,("gl","video/gl")
170+ ,("gnumeric","application/x-gnumeric")
171+ ,("gpt","chemical/x-mopac-graph")
172+ ,("gsf","application/x-font")
173+ ,("gsm","audio/x-gsm")
174+ ,("gtar","application/x-gtar")
175+ ,("h","text/x-chdr")
176+ ,("h++","text/x-c++hdr")
177+ ,("hdf","application/x-hdf")
178+ ,("hh","text/x-c++hdr")
179+ ,("hin","chemical/x-hin")
180+ ,("hpp","text/x-c++hdr")
181+ ,("hqx","application/mac-binhex40")
182+ ,("hs","text/x-haskell")
183+ ,("hta","application/hta")
184+ ,("htc","text/x-component")
185+ ,("htm","text/html")
186+ ,("html","text/html")
187+ ,("hxx","text/x-c++hdr")
188+ ,("ica","application/x-ica")
189+ ,("ice","x-conference/x-cooltalk")
190+ ,("ico","image/x-icon")
191+ ,("ics","text/calendar")
192+ ,("icz","text/calendar")
193+ ,("ief","image/ief")
194+ ,("iges","model/iges")
195+ ,("igs","model/iges")
196+ ,("iii","application/x-iphone")
197+ ,("inp","chemical/x-gamess-input")
198+ ,("ins","application/x-internet-signup")
199+ ,("iso","application/x-iso9660-image")
200+ ,("isp","application/x-internet-signup")
201+ ,("ist","chemical/x-isostar")
202+ ,("istr","chemical/x-isostar")
203+ ,("jad","text/vnd.sun.j2me.app-descriptor")
204+ ,("jar","application/java-archive")
205+ ,("java","text/x-java")
206+ ,("jdx","chemical/x-jcamp-dx")
207+ ,("jmz","application/x-jmol")
208+ ,("jng","image/x-jng")
209+ ,("jnlp","application/x-java-jnlp-file")
210+ ,("jpe","image/jpeg")
211+ ,("jpeg","image/jpeg")
212+ ,("jpg","image/jpeg")
213+ ,("js","application/x-javascript")
214+ ,("kar","audio/midi")
215+ ,("key","application/pgp-keys")
216+ ,("kil","application/x-killustrator")
217+ ,("kin","chemical/x-kinemage")
218+ ,("kml","application/vnd.google-earth.kml+xml")
219+ ,("kmz","application/vnd.google-earth.kmz")
220+ ,("kpr","application/x-kpresenter")
221+ ,("kpt","application/x-kpresenter")
222+ ,("ksp","application/x-kspread")
223+ ,("kwd","application/x-kword")
224+ ,("kwt","application/x-kword")
225+ ,("latex","application/x-latex")
226+ ,("lha","application/x-lha")
227+ ,("lhs","text/x-literate-haskell")
228+ ,("lsf","video/x-la-asf")
229+ ,("lsx","video/x-la-asf")
230+ ,("ltx","text/x-tex")
231+ ,("lyx","application/x-lyx")
232+ ,("lzh","application/x-lzh")
233+ ,("lzx","application/x-lzx")
234+ ,("m3u","audio/mpegurl")
235+ ,("m4a","audio/mpeg")
236+ ,("maker","application/x-maker")
237+ ,("man","application/x-troff-man")
238+ ,("mcif","chemical/x-mmcif")
239+ ,("mcm","chemical/x-macmolecule")
240+ ,("mdb","application/msaccess")
241+ ,("me","application/x-troff-me")
242+ ,("mesh","model/mesh")
243+ ,("mid","audio/midi")
244+ ,("midi","audio/midi")
245+ ,("mif","application/x-mif")
246+ ,("mm","application/x-freemind")
247+ ,("mmd","chemical/x-macromodel-input")
248+ ,("mmf","application/vnd.smaf")
249+ ,("mml","text/mathml")
250+ ,("mmod","chemical/x-macromodel-input")
251+ ,("mng","video/x-mng")
252+ ,("moc","text/x-moc")
253+ ,("mol","chemical/x-mdl-molfile")
254+ ,("mol2","chemical/x-mol2")
255+ ,("moo","chemical/x-mopac-out")
256+ ,("mop","chemical/x-mopac-input")
257+ ,("mopcrt","chemical/x-mopac-input")
258+ ,("mov","video/quicktime")
259+ ,("movie","video/x-sgi-movie")
260+ ,("mp2","audio/mpeg")
261+ ,("mp3","audio/mpeg")
262+ ,("mp4","video/mp4")
263+ ,("mpc","chemical/x-mopac-input")
264+ ,("mpe","video/mpeg")
265+ ,("mpeg","video/mpeg")
266+ ,("mpega","audio/mpeg")
267+ ,("mpg","video/mpeg")
268+ ,("mpga","audio/mpeg")
269+ ,("ms","application/x-troff-ms")
270+ ,("msh","model/mesh")
271+ ,("msi","application/x-msi")
272+ ,("mvb","chemical/x-mopac-vib")
273+ ,("mxu","video/vnd.mpegurl")
274+ ,("nb","application/mathematica")
275+ ,("nc","application/x-netcdf")
276+ ,("nwc","application/x-nwc")
277+ ,("o","application/x-object")
278+ ,("oda","application/oda")
279+ ,("odb","application/vnd.oasis.opendocument.database")
280+ ,("odc","application/vnd.oasis.opendocument.chart")
281+ ,("odf","application/vnd.oasis.opendocument.formula")
282+ ,("odg","application/vnd.oasis.opendocument.graphics")
283+ ,("odi","application/vnd.oasis.opendocument.image")
284+ ,("odm","application/vnd.oasis.opendocument.text-master")
285+ ,("odp","application/vnd.oasis.opendocument.presentation")
286+ ,("ods","application/vnd.oasis.opendocument.spreadsheet")
287+ ,("odt","application/vnd.oasis.opendocument.text")
288+ ,("oga","audio/ogg")
289+ ,("ogg","application/ogg")
290+ ,("ogv","video/ogg")
291+ ,("ogx","application/ogg")
292+ ,("old","application/x-trash")
293+ ,("otg","application/vnd.oasis.opendocument.graphics-template")
294+ ,("oth","application/vnd.oasis.opendocument.text-web")
295+ ,("otp","application/vnd.oasis.opendocument.presentation-template")
296+ ,("ots","application/vnd.oasis.opendocument.spreadsheet-template")
297+ ,("ott","application/vnd.oasis.opendocument.text-template")
298+ ,("oza","application/x-oz-application")
299+ ,("p","text/x-pascal")
300+ ,("p7r","application/x-pkcs7-certreqresp")
301+ ,("pac","application/x-ns-proxy-autoconfig")
302+ ,("pas","text/x-pascal")
303+ ,("pat","image/x-coreldrawpattern")
304+ ,("patch","text/x-diff")
305+ ,("pbm","image/x-portable-bitmap")
306+ ,("pcap","application/cap")
307+ ,("pcf","application/x-font")
308+ ,("pcf.Z","application/x-font")
309+ ,("pcx","image/pcx")
310+ ,("pdb","chemical/x-pdb")
311+ ,("pdf","application/pdf")
312+ ,("pfa","application/x-font")
313+ ,("pfb","application/x-font")
314+ ,("pgm","image/x-portable-graymap")
315+ ,("pgn","application/x-chess-pgn")
316+ ,("pgp","application/pgp-signature")
317+ ,("php","application/x-httpd-php")
318+ ,("php3","application/x-httpd-php3")
319+ ,("php3p","application/x-httpd-php3-preprocessed")
320+ ,("php4","application/x-httpd-php4")
321+ ,("phps","application/x-httpd-php-source")
322+ ,("pht","application/x-httpd-php")
323+ ,("phtml","application/x-httpd-php")
324+ ,("pk","application/x-tex-pk")
325+ ,("pl","text/x-perl")
326+ ,("pls","audio/x-scpls")
327+ ,("pm","text/x-perl")
328+ ,("png","image/png")
329+ ,("pnm","image/x-portable-anymap")
330+ ,("pot","text/plain")
331+ ,("ppm","image/x-portable-pixmap")
332+ ,("pps","application/vnd.ms-powerpoint")
333+ ,("ppt","application/vnd.ms-powerpoint")
334+ ,("prf","application/pics-rules")
335+ ,("prt","chemical/x-ncbi-asn1-ascii")
336+ ,("ps","application/postscript")
337+ ,("psd","image/x-photoshop")
338+ ,("py","text/x-python")
339+ ,("pyc","application/x-python-code")
340+ ,("pyo","application/x-python-code")
341+ ,("qt","video/quicktime")
342+ ,("qtl","application/x-quicktimeplayer")
343+ ,("ra","audio/x-pn-realaudio")
344+ ,("ram","audio/x-pn-realaudio")
345+ ,("rar","application/rar")
346+ ,("ras","image/x-cmu-raster")
347+ ,("rd","chemical/x-mdl-rdfile")
348+ ,("rdf","application/rdf+xml")
349+ ,("rgb","image/x-rgb")
350+ ,("rhtml","application/x-httpd-eruby")
351+ ,("rm","audio/x-pn-realaudio")
352+ ,("roff","application/x-troff")
353+ ,("ros","chemical/x-rosdal")
354+ ,("rpm","application/x-redhat-package-manager")
355+ ,("rss","application/rss+xml")
356+ ,("rtf","application/rtf")
357+ ,("rtx","text/richtext")
358+ ,("rxn","chemical/x-mdl-rxnfile")
359+ ,("sct","text/scriptlet")
360+ ,("sd","chemical/x-mdl-sdfile")
361+ ,("sd2","audio/x-sd2")
362+ ,("sda","application/vnd.stardivision.draw")
363+ ,("sdc","application/vnd.stardivision.calc")
364+ ,("sdd","application/vnd.stardivision.impress")
365+ ,("sdf","application/vnd.stardivision.math")
366+ ,("sds","application/vnd.stardivision.chart")
367+ ,("sdw","application/vnd.stardivision.writer")
368+ ,("ser","application/java-serialized-object")
369+ ,("sgf","application/x-go-sgf")
370+ ,("sgl","application/vnd.stardivision.writer-global")
371+ ,("sh","application/x-sh")
372+ ,("shar","application/x-shar")
373+ ,("shtml","text/html")
374+ ,("sid","audio/prs.sid")
375+ ,("sik","application/x-trash")
376+ ,("silo","model/mesh")
377+ ,("sis","application/vnd.symbian.install")
378+ ,("sisx","x-epoc/x-sisx-app")
379+ ,("sit","application/x-stuffit")
380+ ,("sitx","application/x-stuffit")
381+ ,("skd","application/x-koan")
382+ ,("skm","application/x-koan")
383+ ,("skp","application/x-koan")
384+ ,("skt","application/x-koan")
385+ ,("smi","application/smil")
386+ ,("smil","application/smil")
387+ ,("snd","audio/basic")
388+ ,("spc","chemical/x-galactic-spc")
389+ ,("spl","application/futuresplash")
390+ ,("spx","audio/ogg")
391+ ,("src","application/x-wais-source")
392+ ,("stc","application/vnd.sun.xml.calc.template")
393+ ,("std","application/vnd.sun.xml.draw.template")
394+ ,("sti","application/vnd.sun.xml.impress.template")
395+ ,("stl","application/vnd.ms-pki.stl")
396+ ,("stw","application/vnd.sun.xml.writer.template")
397+ ,("sty","text/x-tex")
398+ ,("sv4cpio","application/x-sv4cpio")
399+ ,("sv4crc","application/x-sv4crc")
400+ ,("svg","image/svg+xml")
401+ ,("svgz","image/svg+xml")
402+ ,("sw","chemical/x-swissprot")
403+ ,("swf","application/x-shockwave-flash")
404+ ,("swfl","application/x-shockwave-flash")
405+ ,("sxc","application/vnd.sun.xml.calc")
406+ ,("sxd","application/vnd.sun.xml.draw")
407+ ,("sxg","application/vnd.sun.xml.writer.global")
408+ ,("sxi","application/vnd.sun.xml.impress")
409+ ,("sxm","application/vnd.sun.xml.math")
410+ ,("sxw","application/vnd.sun.xml.writer")
411+ ,("t","application/x-troff")
412+ ,("tar","application/x-tar")
413+ ,("taz","application/x-gtar")
414+ ,("tcl","application/x-tcl")
415+ ,("tex","text/x-tex")
416+ ,("texi","application/x-texinfo")
417+ ,("texinfo","application/x-texinfo")
418+ ,("text","text/plain")
419+ ,("tgf","chemical/x-mdl-tgf")
420+ ,("tgz","application/x-gtar")
421+ ,("tif","image/tiff")
422+ ,("tiff","image/tiff")
423+ ,("tk","text/x-tcl")
424+ ,("tm","text/texmacs")
425+ ,("torrent","application/x-bittorrent")
426+ ,("tr","application/x-troff")
427+ ,("ts","text/texmacs")
428+ ,("tsp","application/dsptype")
429+ ,("tsv","text/tab-separated-values")
430+ ,("txt","text/plain")
431+ ,("udeb","application/x-debian-package")
432+ ,("uls","text/iuls")
433+ ,("ustar","application/x-ustar")
434+ ,("val","chemical/x-ncbi-asn1-binary")
435+ ,("vcd","application/x-cdlink")
436+ ,("vcf","text/x-vcard")
437+ ,("vcs","text/x-vcalendar")
438+ ,("vmd","chemical/x-vmd")
439+ ,("vms","chemical/x-vamas-iso14976")
440+ ,("vrm","x-world/x-vrml")
441+ ,("vrml","model/vrml")
442+ ,("vsd","application/vnd.visio")
443+ ,("wad","application/x-doom")
444+ ,("wav","audio/x-wav")
445+ ,("wax","audio/x-ms-wax")
446+ ,("wbmp","image/vnd.wap.wbmp")
447+ ,("wbxml","application/vnd.wap.wbxml")
448+ ,("wk","application/x-123")
449+ ,("wm","video/x-ms-wm")
450+ ,("wma","audio/x-ms-wma")
451+ ,("wmd","application/x-ms-wmd")
452+ ,("wml","text/vnd.wap.wml")
453+ ,("wmlc","application/vnd.wap.wmlc")
454+ ,("wmls","text/vnd.wap.wmlscript")
455+ ,("wmlsc","application/vnd.wap.wmlscriptc")
456+ ,("wmv","video/x-ms-wmv")
457+ ,("wmx","video/x-ms-wmx")
458+ ,("wmz","application/x-ms-wmz")
459+ ,("wp5","application/wordperfect5.1")
460+ ,("wpd","application/wordperfect")
461+ ,("wrl","model/vrml")
462+ ,("wsc","text/scriptlet")
463+ ,("wvx","video/x-ms-wvx")
464+ ,("wz","application/x-wingz")
465+ ,("xbm","image/x-xbitmap")
466+ ,("xcf","application/x-xcf")
467+ ,("xht","application/xhtml+xml")
468+ ,("xhtml","application/xhtml+xml")
469+ ,("xlb","application/vnd.ms-excel")
470+ ,("xls","application/vnd.ms-excel")
471+ ,("xlt","application/vnd.ms-excel")
472+ ,("xml","application/xml")
473+ ,("xpi","application/x-xpinstall")
474+ ,("xpm","image/x-xpixmap")
475+ ,("xsl","application/xml")
476+ ,("xtel","chemical/x-xtel")
477+ ,("xul","application/vnd.mozilla.xul+xml")
478+ ,("xwd","image/x-xwindowdump")
479+ ,("xyz","chemical/x-xyz")
480+ ,("zip","application/zip")
481+ ,("zmt","chemical/x-mopac-input")
482+ ]
483+
src/Text/Pandoc/Shared.hs+1−451
@@ -68,7 +68,6 @@ module Text.Pandoc.Shared (
6868 inDirectory,
6969 findDataFile,
7070 readDataFile,
71− getMimeType
7271 ) where
7372
7473import Text.Pandoc.Definition
@@ -80,10 +79,9 @@ import Data.List ( find, isPrefixOf, intercalate )
8079import Network.URI ( isAllowedInURI, escapeURIString, unEscapeString )
8180import Codec.Binary.UTF8.String ( encodeString, decodeString )
8281import System.Directory
83−import System.FilePath ( (</>), takeExtension )
82+import System.FilePath ( (</>) )
8483import Data.Generics (Typeable, Data)
8584import qualified Control.Monad.State as S
86−import qualified Data.Map as M
8785import Paths_pandoc (getDataFileName)
8886
8987--
@@ -555,451 +553,3 @@ findDataFile (Just u) f = do
555553-- Cabal data directory.
556554readDataFile :: Maybe FilePath -> FilePath -> IO String
557555readDataFile userDir fname = findDataFile userDir fname >>= UTF8.readFile
558−
559−-- | Determine mime type appropriate for file path.
560−getMimeType :: FilePath -> Maybe String
561−getMimeType f = M.lookup (map toLower $ drop 1 $ takeExtension f) mimeTypes
562− where mimeTypes = M.fromList -- List borrowed from happstack-server.
563− [("gz","application/x-gzip")
564− ,("cabal","application/x-cabal")
565− ,("%","application/x-trash")
566− ,("323","text/h323")
567− ,("3gp","video/3gpp")
568− ,("7z","application/x-7z-compressed")
569− ,("abw","application/x-abiword")
570− ,("ai","application/postscript")
571− ,("aif","audio/x-aiff")
572− ,("aifc","audio/x-aiff")
573− ,("aiff","audio/x-aiff")
574− ,("alc","chemical/x-alchemy")
575− ,("art","image/x-jg")
576− ,("asc","text/plain")
577− ,("asf","video/x-ms-asf")
578− ,("asn","chemical/x-ncbi-asn1")
579− ,("aso","chemical/x-ncbi-asn1-binary")
580− ,("asx","video/x-ms-asf")
581− ,("atom","application/atom")
582− ,("atomcat","application/atomcat+xml")
583− ,("atomsrv","application/atomserv+xml")
584− ,("au","audio/basic")
585− ,("avi","video/x-msvideo")
586− ,("b","chemical/x-molconn-Z")
587− ,("bak","application/x-trash")
588− ,("bat","application/x-msdos-program")
589− ,("bcpio","application/x-bcpio")
590− ,("bib","text/x-bibtex")
591− ,("bin","application/octet-stream")
592− ,("bmp","image/x-ms-bmp")
593− ,("boo","text/x-boo")
594− ,("book","application/x-maker")
595− ,("bsd","chemical/x-crossfire")
596− ,("c","text/x-csrc")
597− ,("c++","text/x-c++src")
598− ,("c3d","chemical/x-chem3d")
599− ,("cab","application/x-cab")
600− ,("cac","chemical/x-cache")
601− ,("cache","chemical/x-cache")
602− ,("cap","application/cap")
603− ,("cascii","chemical/x-cactvs-binary")
604− ,("cat","application/vnd.ms-pki.seccat")
605− ,("cbin","chemical/x-cactvs-binary")
606− ,("cbr","application/x-cbr")
607− ,("cbz","application/x-cbz")
608− ,("cc","text/x-c++src")
609− ,("cdf","application/x-cdf")
610− ,("cdr","image/x-coreldraw")
611− ,("cdt","image/x-coreldrawtemplate")
612− ,("cdx","chemical/x-cdx")
613− ,("cdy","application/vnd.cinderella")
614− ,("cef","chemical/x-cxf")
615− ,("cer","chemical/x-cerius")
616− ,("chm","chemical/x-chemdraw")
617− ,("chrt","application/x-kchart")
618− ,("cif","chemical/x-cif")
619− ,("class","application/java-vm")
620− ,("cls","text/x-tex")
621− ,("cmdf","chemical/x-cmdf")
622− ,("cml","chemical/x-cml")
623− ,("cod","application/vnd.rim.cod")
624− ,("com","application/x-msdos-program")
625− ,("cpa","chemical/x-compass")
626− ,("cpio","application/x-cpio")
627− ,("cpp","text/x-c++src")
628− ,("cpt","application/mac-compactpro")
629− ,("crl","application/x-pkcs7-crl")
630− ,("crt","application/x-x509-ca-cert")
631− ,("csf","chemical/x-cache-csf")
632− ,("csh","application/x-csh")
633− ,("csm","chemical/x-csml")
634− ,("csml","chemical/x-csml")
635− ,("css","text/css")
636− ,("csv","text/csv")
637− ,("ctab","chemical/x-cactvs-binary")
638− ,("ctx","chemical/x-ctx")
639− ,("cu","application/cu-seeme")
640− ,("cub","chemical/x-gaussian-cube")
641− ,("cxf","chemical/x-cxf")
642− ,("cxx","text/x-c++src")
643− ,("d","text/x-dsrc")
644− ,("dat","chemical/x-mopac-input")
645− ,("dcr","application/x-director")
646− ,("deb","application/x-debian-package")
647− ,("dif","video/dv")
648− ,("diff","text/x-diff")
649− ,("dir","application/x-director")
650− ,("djv","image/vnd.djvu")
651− ,("djvu","image/vnd.djvu")
652− ,("dl","video/dl")
653− ,("dll","application/x-msdos-program")
654− ,("dmg","application/x-apple-diskimage")
655− ,("dms","application/x-dms")
656− ,("doc","application/msword")
657− ,("dot","application/msword")
658− ,("dv","video/dv")
659− ,("dvi","application/x-dvi")
660− ,("dx","chemical/x-jcamp-dx")
661− ,("dxr","application/x-director")
662− ,("emb","chemical/x-embl-dl-nucleotide")
663− ,("embl","chemical/x-embl-dl-nucleotide")
664− ,("eml","message/rfc822")
665− ,("ent","chemical/x-ncbi-asn1-ascii")
666− ,("eps","application/postscript")
667− ,("etx","text/x-setext")
668− ,("exe","application/x-msdos-program")
669− ,("ez","application/andrew-inset")
670− ,("fb","application/x-maker")
671− ,("fbdoc","application/x-maker")
672− ,("fch","chemical/x-gaussian-checkpoint")
673− ,("fchk","chemical/x-gaussian-checkpoint")
674− ,("fig","application/x-xfig")
675− ,("flac","application/x-flac")
676− ,("fli","video/fli")
677− ,("fm","application/x-maker")
678− ,("frame","application/x-maker")
679− ,("frm","application/x-maker")
680− ,("gal","chemical/x-gaussian-log")
681− ,("gam","chemical/x-gamess-input")
682− ,("gamin","chemical/x-gamess-input")
683− ,("gau","chemical/x-gaussian-input")
684− ,("gcd","text/x-pcs-gcd")
685− ,("gcf","application/x-graphing-calculator")
686− ,("gcg","chemical/x-gcg8-sequence")
687− ,("gen","chemical/x-genbank")
688− ,("gf","application/x-tex-gf")
689− ,("gif","image/gif")
690− ,("gjc","chemical/x-gaussian-input")
691− ,("gjf","chemical/x-gaussian-input")
692− ,("gl","video/gl")
693− ,("gnumeric","application/x-gnumeric")
694− ,("gpt","chemical/x-mopac-graph")
695− ,("gsf","application/x-font")
696− ,("gsm","audio/x-gsm")
697− ,("gtar","application/x-gtar")
698− ,("h","text/x-chdr")
699− ,("h++","text/x-c++hdr")
700− ,("hdf","application/x-hdf")
701− ,("hh","text/x-c++hdr")
702− ,("hin","chemical/x-hin")
703− ,("hpp","text/x-c++hdr")
704− ,("hqx","application/mac-binhex40")
705− ,("hs","text/x-haskell")
706− ,("hta","application/hta")
707− ,("htc","text/x-component")
708− ,("htm","text/html")
709− ,("html","text/html")
710− ,("hxx","text/x-c++hdr")
711− ,("ica","application/x-ica")
712− ,("ice","x-conference/x-cooltalk")
713− ,("ico","image/x-icon")
714− ,("ics","text/calendar")
715− ,("icz","text/calendar")
716− ,("ief","image/ief")
717− ,("iges","model/iges")
718− ,("igs","model/iges")
719− ,("iii","application/x-iphone")
720− ,("inp","chemical/x-gamess-input")
721− ,("ins","application/x-internet-signup")
722− ,("iso","application/x-iso9660-image")
723− ,("isp","application/x-internet-signup")
724− ,("ist","chemical/x-isostar")
725− ,("istr","chemical/x-isostar")
726− ,("jad","text/vnd.sun.j2me.app-descriptor")
727− ,("jar","application/java-archive")
728− ,("java","text/x-java")
729− ,("jdx","chemical/x-jcamp-dx")
730− ,("jmz","application/x-jmol")
731− ,("jng","image/x-jng")
732− ,("jnlp","application/x-java-jnlp-file")
733− ,("jpe","image/jpeg")
734− ,("jpeg","image/jpeg")
735− ,("jpg","image/jpeg")
736− ,("js","application/x-javascript")
737− ,("kar","audio/midi")
738− ,("key","application/pgp-keys")
739− ,("kil","application/x-killustrator")
740− ,("kin","chemical/x-kinemage")
741− ,("kml","application/vnd.google-earth.kml+xml")
742− ,("kmz","application/vnd.google-earth.kmz")
743− ,("kpr","application/x-kpresenter")
744− ,("kpt","application/x-kpresenter")
745− ,("ksp","application/x-kspread")
746− ,("kwd","application/x-kword")
747− ,("kwt","application/x-kword")
748− ,("latex","application/x-latex")
749− ,("lha","application/x-lha")
750− ,("lhs","text/x-literate-haskell")
751− ,("lsf","video/x-la-asf")
752− ,("lsx","video/x-la-asf")
753− ,("ltx","text/x-tex")
754− ,("lyx","application/x-lyx")
755− ,("lzh","application/x-lzh")
756− ,("lzx","application/x-lzx")
757− ,("m3u","audio/mpegurl")
758− ,("m4a","audio/mpeg")
759− ,("maker","application/x-maker")
760− ,("man","application/x-troff-man")
761− ,("mcif","chemical/x-mmcif")
762− ,("mcm","chemical/x-macmolecule")
763− ,("mdb","application/msaccess")
764− ,("me","application/x-troff-me")
765− ,("mesh","model/mesh")
766− ,("mid","audio/midi")
767− ,("midi","audio/midi")
768− ,("mif","application/x-mif")
769− ,("mm","application/x-freemind")
770− ,("mmd","chemical/x-macromodel-input")
771− ,("mmf","application/vnd.smaf")
772− ,("mml","text/mathml")
773− ,("mmod","chemical/x-macromodel-input")
774− ,("mng","video/x-mng")
775− ,("moc","text/x-moc")
776− ,("mol","chemical/x-mdl-molfile")
777− ,("mol2","chemical/x-mol2")
778− ,("moo","chemical/x-mopac-out")
779− ,("mop","chemical/x-mopac-input")
780− ,("mopcrt","chemical/x-mopac-input")
781− ,("mov","video/quicktime")
782− ,("movie","video/x-sgi-movie")
783− ,("mp2","audio/mpeg")
784− ,("mp3","audio/mpeg")
785− ,("mp4","video/mp4")
786− ,("mpc","chemical/x-mopac-input")
787− ,("mpe","video/mpeg")
788− ,("mpeg","video/mpeg")
789− ,("mpega","audio/mpeg")
790− ,("mpg","video/mpeg")
791− ,("mpga","audio/mpeg")
792− ,("ms","application/x-troff-ms")
793− ,("msh","model/mesh")
794− ,("msi","application/x-msi")
795− ,("mvb","chemical/x-mopac-vib")
796− ,("mxu","video/vnd.mpegurl")
797− ,("nb","application/mathematica")
798− ,("nc","application/x-netcdf")
799− ,("nwc","application/x-nwc")
800− ,("o","application/x-object")
801− ,("oda","application/oda")
802− ,("odb","application/vnd.oasis.opendocument.database")
803− ,("odc","application/vnd.oasis.opendocument.chart")
804− ,("odf","application/vnd.oasis.opendocument.formula")
805− ,("odg","application/vnd.oasis.opendocument.graphics")
806− ,("odi","application/vnd.oasis.opendocument.image")
807− ,("odm","application/vnd.oasis.opendocument.text-master")
808− ,("odp","application/vnd.oasis.opendocument.presentation")
809− ,("ods","application/vnd.oasis.opendocument.spreadsheet")
810− ,("odt","application/vnd.oasis.opendocument.text")
811− ,("oga","audio/ogg")
812− ,("ogg","application/ogg")
813− ,("ogv","video/ogg")
814− ,("ogx","application/ogg")
815− ,("old","application/x-trash")
816− ,("otg","application/vnd.oasis.opendocument.graphics-template")
817− ,("oth","application/vnd.oasis.opendocument.text-web")
818− ,("otp","application/vnd.oasis.opendocument.presentation-template")
819− ,("ots","application/vnd.oasis.opendocument.spreadsheet-template")
820− ,("ott","application/vnd.oasis.opendocument.text-template")
821− ,("oza","application/x-oz-application")
822− ,("p","text/x-pascal")
823− ,("p7r","application/x-pkcs7-certreqresp")
824− ,("pac","application/x-ns-proxy-autoconfig")
825− ,("pas","text/x-pascal")
826− ,("pat","image/x-coreldrawpattern")
827− ,("patch","text/x-diff")
828− ,("pbm","image/x-portable-bitmap")
829− ,("pcap","application/cap")
830− ,("pcf","application/x-font")
831− ,("pcf.Z","application/x-font")
832− ,("pcx","image/pcx")
833− ,("pdb","chemical/x-pdb")
834− ,("pdf","application/pdf")
835− ,("pfa","application/x-font")
836− ,("pfb","application/x-font")
837− ,("pgm","image/x-portable-graymap")
838− ,("pgn","application/x-chess-pgn")
839− ,("pgp","application/pgp-signature")
840− ,("php","application/x-httpd-php")
841− ,("php3","application/x-httpd-php3")
842− ,("php3p","application/x-httpd-php3-preprocessed")
843− ,("php4","application/x-httpd-php4")
844− ,("phps","application/x-httpd-php-source")
845− ,("pht","application/x-httpd-php")
846− ,("phtml","application/x-httpd-php")
847− ,("pk","application/x-tex-pk")
848− ,("pl","text/x-perl")
849− ,("pls","audio/x-scpls")
850− ,("pm","text/x-perl")
851− ,("png","image/png")
852− ,("pnm","image/x-portable-anymap")
853− ,("pot","text/plain")
854− ,("ppm","image/x-portable-pixmap")
855− ,("pps","application/vnd.ms-powerpoint")
856− ,("ppt","application/vnd.ms-powerpoint")
857− ,("prf","application/pics-rules")
858− ,("prt","chemical/x-ncbi-asn1-ascii")
859− ,("ps","application/postscript")
860− ,("psd","image/x-photoshop")
861− ,("py","text/x-python")
862− ,("pyc","application/x-python-code")
863− ,("pyo","application/x-python-code")
864− ,("qt","video/quicktime")
865− ,("qtl","application/x-quicktimeplayer")
866− ,("ra","audio/x-pn-realaudio")
867− ,("ram","audio/x-pn-realaudio")
868− ,("rar","application/rar")
869− ,("ras","image/x-cmu-raster")
870− ,("rd","chemical/x-mdl-rdfile")
871− ,("rdf","application/rdf+xml")
872− ,("rgb","image/x-rgb")
873− ,("rhtml","application/x-httpd-eruby")
874− ,("rm","audio/x-pn-realaudio")
875− ,("roff","application/x-troff")
876− ,("ros","chemical/x-rosdal")
877− ,("rpm","application/x-redhat-package-manager")
878− ,("rss","application/rss+xml")
879− ,("rtf","application/rtf")
880− ,("rtx","text/richtext")
881− ,("rxn","chemical/x-mdl-rxnfile")
882− ,("sct","text/scriptlet")
883− ,("sd","chemical/x-mdl-sdfile")
884− ,("sd2","audio/x-sd2")
885− ,("sda","application/vnd.stardivision.draw")
886− ,("sdc","application/vnd.stardivision.calc")
887− ,("sdd","application/vnd.stardivision.impress")
888− ,("sdf","application/vnd.stardivision.math")
889− ,("sds","application/vnd.stardivision.chart")
890− ,("sdw","application/vnd.stardivision.writer")
891− ,("ser","application/java-serialized-object")
892− ,("sgf","application/x-go-sgf")
893− ,("sgl","application/vnd.stardivision.writer-global")
894− ,("sh","application/x-sh")
895− ,("shar","application/x-shar")
896− ,("shtml","text/html")
897− ,("sid","audio/prs.sid")
898− ,("sik","application/x-trash")
899− ,("silo","model/mesh")
900− ,("sis","application/vnd.symbian.install")
901− ,("sisx","x-epoc/x-sisx-app")
902− ,("sit","application/x-stuffit")
903− ,("sitx","application/x-stuffit")
904− ,("skd","application/x-koan")
905− ,("skm","application/x-koan")
906− ,("skp","application/x-koan")
907− ,("skt","application/x-koan")
908− ,("smi","application/smil")
909− ,("smil","application/smil")
910− ,("snd","audio/basic")
911− ,("spc","chemical/x-galactic-spc")
912− ,("spl","application/futuresplash")
913− ,("spx","audio/ogg")
914− ,("src","application/x-wais-source")
915− ,("stc","application/vnd.sun.xml.calc.template")
916− ,("std","application/vnd.sun.xml.draw.template")
917− ,("sti","application/vnd.sun.xml.impress.template")
918− ,("stl","application/vnd.ms-pki.stl")
919− ,("stw","application/vnd.sun.xml.writer.template")
920− ,("sty","text/x-tex")
921− ,("sv4cpio","application/x-sv4cpio")
922− ,("sv4crc","application/x-sv4crc")
923− ,("svg","image/svg+xml")
924− ,("svgz","image/svg+xml")
925− ,("sw","chemical/x-swissprot")
926− ,("swf","application/x-shockwave-flash")
927− ,("swfl","application/x-shockwave-flash")
928− ,("sxc","application/vnd.sun.xml.calc")
929− ,("sxd","application/vnd.sun.xml.draw")
930− ,("sxg","application/vnd.sun.xml.writer.global")
931− ,("sxi","application/vnd.sun.xml.impress")
932− ,("sxm","application/vnd.sun.xml.math")
933− ,("sxw","application/vnd.sun.xml.writer")
934− ,("t","application/x-troff")
935− ,("tar","application/x-tar")
936− ,("taz","application/x-gtar")
937− ,("tcl","application/x-tcl")
938− ,("tex","text/x-tex")
939− ,("texi","application/x-texinfo")
940− ,("texinfo","application/x-texinfo")
941− ,("text","text/plain")
942− ,("tgf","chemical/x-mdl-tgf")
943− ,("tgz","application/x-gtar")
944− ,("tif","image/tiff")
945− ,("tiff","image/tiff")
946− ,("tk","text/x-tcl")
947− ,("tm","text/texmacs")
948− ,("torrent","application/x-bittorrent")
949− ,("tr","application/x-troff")
950− ,("ts","text/texmacs")
951− ,("tsp","application/dsptype")
952− ,("tsv","text/tab-separated-values")
953− ,("txt","text/plain")
954− ,("udeb","application/x-debian-package")
955− ,("uls","text/iuls")
956− ,("ustar","application/x-ustar")
957− ,("val","chemical/x-ncbi-asn1-binary")
958− ,("vcd","application/x-cdlink")
959− ,("vcf","text/x-vcard")
960− ,("vcs","text/x-vcalendar")
961− ,("vmd","chemical/x-vmd")
962− ,("vms","chemical/x-vamas-iso14976")
963− ,("vrm","x-world/x-vrml")
964− ,("vrml","model/vrml")
965− ,("vsd","application/vnd.visio")
966− ,("wad","application/x-doom")
967− ,("wav","audio/x-wav")
968− ,("wax","audio/x-ms-wax")
969− ,("wbmp","image/vnd.wap.wbmp")
970− ,("wbxml","application/vnd.wap.wbxml")
971− ,("wk","application/x-123")
972− ,("wm","video/x-ms-wm")
973− ,("wma","audio/x-ms-wma")
974− ,("wmd","application/x-ms-wmd")
975− ,("wml","text/vnd.wap.wml")
976− ,("wmlc","application/vnd.wap.wmlc")
977− ,("wmls","text/vnd.wap.wmlscript")
978− ,("wmlsc","application/vnd.wap.wmlscriptc")
979− ,("wmv","video/x-ms-wmv")
980− ,("wmx","video/x-ms-wmx")
981− ,("wmz","application/x-ms-wmz")
982− ,("wp5","application/wordperfect5.1")
983− ,("wpd","application/wordperfect")
984− ,("wrl","model/vrml")
985− ,("wsc","text/scriptlet")
986− ,("wvx","video/x-ms-wvx")
987− ,("wz","application/x-wingz")
988− ,("xbm","image/x-xbitmap")
989− ,("xcf","application/x-xcf")
990− ,("xht","application/xhtml+xml")
991− ,("xhtml","application/xhtml+xml")
992− ,("xlb","application/vnd.ms-excel")
993− ,("xls","application/vnd.ms-excel")
994− ,("xlt","application/vnd.ms-excel")
995− ,("xml","application/xml")
996− ,("xpi","application/x-xpinstall")
997− ,("xpm","image/x-xpixmap")
998− ,("xsl","application/xml")
999− ,("xtel","chemical/x-xtel")
1000− ,("xul","application/vnd.mozilla.xul+xml")
1001− ,("xwd","image/x-xwindowdump")
1002− ,("xyz","chemical/x-xyz")
1003− ,("zip","application/zip")
1004− ,("zmt","chemical/x-mopac-input")
1005− ]
src/Text/Pandoc/Writers/ODT.hs+2−1
@@ -36,7 +36,8 @@ import Data.ByteString.Lazy.UTF8 ( fromString )
3636import Codec.Archive.Zip
3737import System.Time
3838import Paths_pandoc ( getDataFileName )
39−import Text.Pandoc.Shared ( WriterOptions(..), getMimeType )
39+import Text.Pandoc.Shared ( WriterOptions(..) )
40+import Text.Pandoc.MIME ( getMimeType )
4041import Text.Pandoc.Definition
4142import Text.Pandoc.Generic
4243import Text.Pandoc.Writers.OpenDocument ( writeOpenDocument )