|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2014 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing mimetype dependent functions. |
|
8 """ |
|
9 |
|
10 import mimetypes |
|
11 |
|
12 TextMimeTypes = [ |
|
13 "application/bookmarks.xbel", |
|
14 "application/opensearchdescription+xml", |
|
15 "application/x-actionscript", |
|
16 "application/x-actionscript3", |
|
17 "application/x-awk", |
|
18 "application/x-sh", |
|
19 "application/x-shellscript", |
|
20 "application/x-shell-session", |
|
21 "application/x-dos-batch", |
|
22 "application/x-befunge", |
|
23 "application/x-brainfuck", |
|
24 "application/x-javascript+cheetah", |
|
25 "application/x-javascript+spitfire", |
|
26 "application/x-cheetah", |
|
27 "application/x-spitfire", |
|
28 "application/xml+cheetah", |
|
29 "application/xml+spitfire", |
|
30 "application/x-clojure", |
|
31 "application/x-coldfusion", |
|
32 "application/x-cython", |
|
33 "application/x-django-templating", |
|
34 "application/x-jinja", |
|
35 "application/xml-dtd", |
|
36 "application/x-ecl", |
|
37 "application/x-ruby-templating", |
|
38 "application/x-evoque", |
|
39 "application/xml+evoque", |
|
40 "application/x-fantom", |
|
41 "application/x-genshi", |
|
42 "application/x-kid", |
|
43 "application/x-genshi-text", |
|
44 "application/x-gettext", |
|
45 "application/x-troff", |
|
46 "application/xhtml+xml", |
|
47 "application/x-php", |
|
48 "application/x-httpd-php", |
|
49 "application/x-httpd-php3", |
|
50 "application/x-httpd-php4", |
|
51 "application/x-httpd-php5", |
|
52 "application/x-hybris", |
|
53 "application/x-javascript+django", |
|
54 "application/x-javascript+jinja", |
|
55 "application/x-javascript+ruby", |
|
56 "application/x-javascript+genshi", |
|
57 "application/javascript", |
|
58 "application/x-javascript", |
|
59 "application/x-javascript+php", |
|
60 "application/x-javascript+smarty", |
|
61 "application/json", |
|
62 "application/x-jsp", |
|
63 "application/x-julia", |
|
64 "application/x-httpd-lasso", |
|
65 "application/x-httpd-lasso[89]", |
|
66 "application/x-httpd-lasso8", |
|
67 "application/x-httpd-lasso9", |
|
68 "application/x-javascript+lasso", |
|
69 "application/xml+lasso", |
|
70 "application/x-lua", |
|
71 "application/x-javascript+mako", |
|
72 "application/x-mako", |
|
73 "application/xml+mako", |
|
74 "application/x-gooddata-maql", |
|
75 "application/x-mason", |
|
76 "application/x-moonscript", |
|
77 "application/x-javascript+myghty", |
|
78 "application/x-myghty", |
|
79 "application/xml+myghty", |
|
80 "application/x-newlisp", |
|
81 "application/x-openedge", |
|
82 "application/x-perl", |
|
83 "application/postscript", |
|
84 "application/x-pypylog", |
|
85 "application/x-python3", |
|
86 "application/x-python", |
|
87 "application/x-qml", |
|
88 "application/x-racket", |
|
89 "application/x-pygments-tokens", |
|
90 "application/x-ruby", |
|
91 "application/x-standardml", |
|
92 "application/x-scheme", |
|
93 "application/x-sh-session", |
|
94 "application/x-smarty", |
|
95 "application/x-ssp", |
|
96 "application/x-tcl", |
|
97 "application/x-csh", |
|
98 "application/x-urbiscript", |
|
99 "application/xml+velocity", |
|
100 "application/xquery", |
|
101 "application/xml+django", |
|
102 "application/xml+jinja", |
|
103 "application/xml+ruby", |
|
104 "application/xml", |
|
105 "application/rss+xml", |
|
106 "application/atom+xml", |
|
107 "application/xml+php", |
|
108 "application/xml+smarty", |
|
109 "application/xsl+xml", |
|
110 "application/xslt+xml", |
|
111 |
|
112 "image/svg+xml", |
|
113 ] |
|
114 |
|
115 |
|
116 def isTextFile(filename): |
|
117 """ |
|
118 Function to test, if the given file is a text (i.e. editable) file. |
|
119 |
|
120 @param filename name of the file to be checked (string) |
|
121 @return flag indicating an editable file (boolean) |
|
122 """ |
|
123 type_ = mimetypes.guess_type(filename)[0] |
|
124 if (type_ is None or |
|
125 type_.split("/")[0] == "text" or |
|
126 type_ in TextMimeTypes): |
|
127 return True |
|
128 else: |
|
129 return False |