rwdlanguage 0.01
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Readme.txt +475 -0
- data/bin/rwdlanguage +19 -0
- data/code/01rwdcore/01rwdcore.rb +29 -0
- data/code/01rwdcore/02helptexthashbegin.rb +16 -0
- data/code/01rwdcore/03helptexthash.rb +21 -0
- data/code/01rwdcore/jumplinkcommand.rb +36 -0
- data/code/01rwdcore/openhelpwindow.rb +38 -0
- data/code/01rwdcore/returntomain.rb +10 -0
- data/code/01rwdcore/rundocuments.rb +10 -0
- data/code/01rwdcore/runeditconfiguration.rb +10 -0
- data/code/01rwdcore/runhelpabout.rb +15 -0
- data/code/01rwdcore/runopentinkerdocument.rb +7 -0
- data/code/01rwdcore/runtab.rb +15 -0
- data/code/01rwdcore/rwdtinkerversion.rb +22 -0
- data/code/01rwdcore/rwdwindowreturn.rb +9 -0
- data/code/01rwdcore/selectiontab.rb +11 -0
- data/code/01rwdcore/setuphelpaboutoptions.rb +15 -0
- data/code/01rwdcore/setuptinkerdocuments.rb +7 -0
- data/code/01rwdcore/test_cases.rb +158 -0
- data/code/01rwdcore/test_harness.rb +20 -0
- data/code/01rwdcore/uploadreturns.rb +65 -0
- data/code/dd0viewphoto/dd0viewphoto.rb +5 -0
- data/code/superant.com.language/0uninstallapplet.rb +22 -0
- data/code/superant.com.language/googlelang.rb +25 -0
- data/code/superant.com.language/helptexthashload.rb +22 -0
- data/code/superant.com.language/loadconfigurationrecord.rb +22 -0
- data/code/superant.com.language/loadconfigurationvariables.rb +14 -0
- data/code/superant.com.language/openhelpwindow.rb +24 -0
- data/code/superant.com.language/rubySteak.rb +40 -0
- data/code/superant.com.language/runappletwindow.rb +12 -0
- data/code/superant.com.language/runrwdshellwindow.rb +12 -0
- data/code/superant.com.language/runrwdwordsbackwindow.rb +10 -0
- data/code/superant.com.language/rwdtinkerversion.rb +10 -0
- data/code/superant.com.language/saveconfigurationrecord.rb +20 -0
- data/code/superant.com.language/test_cases.rb +20 -0
- data/code/superant.com.rwdtinkerbackwindow/changelocale.rb +84 -0
- data/code/superant.com.rwdtinkerbackwindow/diagnostictab.rb +19 -0
- data/code/superant.com.rwdtinkerbackwindow/initiateapplets.rb +169 -0
- data/code/superant.com.rwdtinkerbackwindow/installgemapplet.rb +38 -0
- data/code/superant.com.rwdtinkerbackwindow/installremotegem.rb +20 -0
- data/code/superant.com.rwdtinkerbackwindow/listgemdirs.rb +12 -0
- data/code/superant.com.rwdtinkerbackwindow/listgemzips.rb +55 -0
- data/code/superant.com.rwdtinkerbackwindow/listinstalledfiles.rb +14 -0
- data/code/superant.com.rwdtinkerbackwindow/listzips.rb +37 -0
- data/code/superant.com.rwdtinkerbackwindow/loadconfigurationrecord.rb +24 -0
- data/code/superant.com.rwdtinkerbackwindow/loadconfigurationvariables.rb +14 -0
- data/code/superant.com.rwdtinkerbackwindow/network.rb +87 -0
- data/code/superant.com.rwdtinkerbackwindow/openappletname.rb +19 -0
- data/code/superant.com.rwdtinkerbackwindow/openhelpwindowtinkerwin2.rb +40 -0
- data/code/superant.com.rwdtinkerbackwindow/remotegemlist.rb +24 -0
- data/code/superant.com.rwdtinkerbackwindow/removeapplet.rb +46 -0
- data/code/superant.com.rwdtinkerbackwindow/removeappletvariables.rb +52 -0
- data/code/superant.com.rwdtinkerbackwindow/runremoteinstall.rb +11 -0
- data/code/superant.com.rwdtinkerbackwindow/runrwdtinkerbackwindow.rb +15 -0
- data/code/superant.com.rwdtinkerbackwindow/rwdtinkerwin2version.rb +13 -0
- data/code/superant.com.rwdtinkerbackwindow/saveconfigurationrecord.rb +19 -0
- data/code/superant.com.rwdtinkerbackwindow/showlocaleoptions.rb +9 -0
- data/code/superant.com.rwdtinkerbackwindow/viewappletcontents.rb +23 -0
- data/code/superant.com.rwdtinkerbackwindow/viewgemappletcontents.rb +24 -0
- data/code/superant.com.rwdtinkerbackwindow/viewlogfile.rb +16 -0
- data/code/superant.com.thesaurus/clearhttpview3.rb +9 -0
- data/code/superant.com.thesaurus/listwordlookup.rb +37 -0
- data/code/superant.com.thesaurus/runappletwindow.rb +12 -0
- data/code/superant.com.words/dictlookup.rb +20 -0
- data/code/superant.com.words/runrwdwordsbackwindow.rb +10 -0
- data/code/superant.com.words/rwdtinkerversion.rb +10 -0
- data/code/zz0applicationend/zz0end.rb +5 -0
- data/configuration/rwdtinker.dist +15 -0
- data/configuration/rwdwlanguage.dist +21 -0
- data/configuration/tinkerwin2variables.dist +23 -0
- data/gui/00coreguibegin/applicationguitop.rwd +9 -0
- data/gui/frontwindow0/cc0openphoto.rwd +22 -0
- data/gui/frontwindowselections/00selectiontabbegin.rwd +11 -0
- data/gui/frontwindowselections/jumplinkcommands.rwd +15 -0
- data/gui/frontwindowselections/wwselectionend.rwd +3 -0
- data/gui/frontwindowtdocuments/00documentbegin.rwd +6 -0
- data/gui/frontwindowtdocuments/tinkerdocuments.rwd +14 -0
- data/gui/frontwindowtdocuments/zzdocumentend.rwd +8 -0
- data/gui/helpaboutbegin/zzzrwdlasttab.rwd +6 -0
- data/gui/helpaboutbegin/zzzzhelpscreenstart.rwd +3 -0
- data/gui/helpaboutbegin/zzzzzzhelpabouttab.rwd +15 -0
- data/gui/helpaboutzend/helpscreenend.rwd +3 -0
- data/gui/helpaboutzend/zhelpscreenstart2.rwd +3 -0
- data/gui/helpaboutzend/zzzzhelpabout2.rwd +15 -0
- data/gui/helpaboutzend/zzzzhelpscreen2end.rwd +3 -0
- data/gui/tinkerbackwindows/superant.com.language/1appname.rwd +4 -0
- data/gui/tinkerbackwindows/superant.com.language/22google.rwd +38 -0
- data/gui/tinkerbackwindows/superant.com.language/44germany.rwd +19 -0
- data/gui/tinkerbackwindows/superant.com.language/67viewconfiguration.rwd +27 -0
- data/gui/tinkerbackwindows/superant.com.language/77jumplinkcommands.rwd +17 -0
- data/gui/tinkerbackwindows/superant.com.language/z9end.rwd +6 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/1appname.rwd +5 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/40rwdlistzips.rwd +41 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/45installremotezip.rwd +44 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/50rwdlistapplets.rwd +44 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/60editconfiguration.rwd +30 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/70rwddiagnostics.rwd +29 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/75rwdlogfile.rwd +20 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/80localechanger.rwd +17 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/81jumplinkcommands.rwd +17 -0
- data/gui/tinkerbackwindows/superant.com.tinkerbackwindow/9backend.rwd +6 -0
- data/gui/tinkerbackwindows/superant.com.tinkerhelpwindow/1appname.rwd +31 -0
- data/gui/tinkerbackwindows/superant.com.tinkerhelpwindow/9end.rwd +4 -0
- data/gui/tinkerbackwindows/superant.com.versionwindow/1appname.rwd +19 -0
- data/gui/tinkerbackwindows/superant.com.versionwindow/helpaboutwindow.rwd +17 -0
- data/gui/tinkerbackwindows/superant.com.words/1appname.rwd +4 -0
- data/gui/tinkerbackwindows/superant.com.words/1dictionary.rwd +19 -0
- data/gui/tinkerbackwindows/superant.com.words/4thesaurus.rwd +36 -0
- data/gui/tinkerbackwindows/superant.com.words/77jumplinkcommands.rwd +17 -0
- data/gui/tinkerbackwindows/superant.com.words/z9end.rwd +6 -0
- data/gui/zzcoreguiend/yy9rwdend.rwd +4 -0
- data/init.rb +179 -0
- data/installed/rwdwlanguage.inf +24 -0
- data/installed/temp.rb +1 -0
- data/lang/en/rwdcore/en.po +197 -0
- data/lang/en/rwdlanguage/en.po +32 -0
- data/lang/es/rwdcore/es.po +184 -0
- data/lang/es/rwdlanguage/en.po +32 -0
- data/lang/fr/rwdcore/fr.po +169 -0
- data/lang/fr/rwdlanguage/en.po +32 -0
- data/lang/hi/rwdcore/hi.po +173 -0
- data/lang/hi/rwdlanguage/en.po +32 -0
- data/lang/ja/rwdcore/ja.po +171 -0
- data/lang/ja/rwdlanguage/en.po +32 -0
- data/lang/nl/rwdcore/nl.po +169 -0
- data/lang/nl/rwdlanguage/en.po +32 -0
- data/lib/dict.rb +438 -0
- data/lib/g_translate.rb +43 -0
- data/lib/g_translate/client.rb +84 -0
- data/lib/g_translate/translator.rb +57 -0
- data/lib/ger-eng.txt +111283 -0
- data/lib/oothesaurus.rb +76 -0
- data/lib/rconftool.rb +387 -0
- data/lib/rwd/browser.rb +123 -0
- data/lib/rwd/ftools.rb +174 -0
- data/lib/rwd/mime.rb +328 -0
- data/lib/rwd/net.rb +877 -0
- data/lib/rwd/ruby.rb +889 -0
- data/lib/rwd/rwd.rb +1425 -0
- data/lib/rwd/sgml.rb +236 -0
- data/lib/rwd/thread.rb +63 -0
- data/lib/rwd/tree.rb +371 -0
- data/lib/rwd/xml.rb +101 -0
- data/lib/rwdthemes/default.rwd +317 -0
- data/lib/rwdthemes/pda.rwd +72 -0
- data/lib/rwdthemes/windowslike.rwd +171 -0
- data/lib/rwdtinker/rwdcodedir.rb +56 -0
- data/lib/rwdtinker/rwdguidir.rb +57 -0
- data/lib/rwdtinker/rwdlangdir.rb +60 -0
- data/lib/rwdtinker/rwdtinkertools.rb +25 -0
- data/lib/zip/ioextras.rb +155 -0
- data/lib/zip/stdrubyext.rb +111 -0
- data/lib/zip/tempfile_bugfixed.rb +195 -0
- data/lib/zip/zip.rb +1847 -0
- data/lib/zip/zipfilesystem.rb +609 -0
- data/lib/zip/ziprequire.rb +90 -0
- data/rwd_files/HowTo_Language.txt +179 -0
- data/rwd_files/HowTo_Tinker.txt +515 -0
- data/rwd_files/HowTo_TinkerWin2.txt +202 -0
- data/rwd_files/Readme.txt +57 -0
- data/rwd_files/RubyWebDialogs.html +6 -0
- data/rwd_files/Tinkerhelptexthash.txt +84 -0
- data/rwd_files/favicon.ico +0 -0
- data/rwd_files/log/rwdtinker.log +726 -0
- data/rwd_files/rdoc-style.css +175 -0
- data/rwd_files/rwdapplications.html +76 -0
- data/rwd_files/rwdlanguagehelpfiles.txt +34 -0
- data/rwd_files/tinker.png +0 -0
- data/rwdconfig.dist +24 -0
- data/rwdlanguage.rb +1 -0
- data/tests/RubyGauge.rb +179 -0
- data/tests/checkdepends.sh +4 -0
- data/tests/cleancnf.sh +6 -0
- data/tests/makedist-rwdwlanguage.rb +56 -0
- data/tests/makedist.rb +66 -0
- data/tests/rdep.rb +354 -0
- data/tests/totranslate.lang +93 -0
- data/zips/rwdwcalc-0.63.zip +0 -0
- data/zips/rwdwfoldeditor-0.08.zip +0 -0
- data/zips/rwdwhypernote-0.16.zip +0 -0
- data/zips/rwdwlanguage-0.01.zip +0 -0
- data/zips/rwdwmovies-0.98.zip +0 -0
- data/zips/rwdwruby-1.08.zip +0 -0
- data/zips/temp.rb +1 -0
- data/zips/tinkerbellw-0.04.zip +0 -0
- data/zips/wrubyslippers-1.08.zip +0 -0
- metadata +246 -0
data/lib/rwd/browser.rb
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
require "lib/rwd/ruby"
|
2
|
+
require "lib/rwd/net"
|
3
|
+
|
4
|
+
begin
|
5
|
+
require "win32ole"
|
6
|
+
require "win32/registry"
|
7
|
+
rescue LoadError
|
8
|
+
$".push "win32ole.so"
|
9
|
+
$".push "win32/registry.rb"
|
10
|
+
end
|
11
|
+
|
12
|
+
def windowsbrowser
|
13
|
+
$stderr.puts "Looking for default browser..."
|
14
|
+
|
15
|
+
filetype = "htmlfile"
|
16
|
+
application = nil
|
17
|
+
|
18
|
+
begin
|
19
|
+
Win32::Registry::HKEY_CLASSES_ROOT.open(".html") do |reg|
|
20
|
+
filetype = reg[""]
|
21
|
+
end
|
22
|
+
|
23
|
+
Win32::Registry::HKEY_CLASSES_ROOT.open(filetype + "\\shell\\open\\command") do |reg|
|
24
|
+
application = reg[""]
|
25
|
+
end
|
26
|
+
rescue NameError
|
27
|
+
$stderr.puts "Only available for Windows and Cygwin."
|
28
|
+
end
|
29
|
+
|
30
|
+
application
|
31
|
+
end
|
32
|
+
|
33
|
+
def cygwinbrowser
|
34
|
+
browser, *args = windowsbrowser.splitwords
|
35
|
+
browser = browser.gsub(/\\/, "/")
|
36
|
+
#browser = browser
|
37
|
+
|
38
|
+
args.collect!{|a| a.gsub(/\\/, "/")}
|
39
|
+
#args.collect!{|a| "\"%s\"" % [a.gsub(/\\/, "/")]}
|
40
|
+
#args.collect!{|a| "\"%s\"" % [a]}
|
41
|
+
|
42
|
+
res = "\"%s\" %s" % [browser, args.join(" ")]
|
43
|
+
res
|
44
|
+
end
|
45
|
+
|
46
|
+
def linuxbrowser
|
47
|
+
application = ""
|
48
|
+
|
49
|
+
application = `which galeon 2> /dev/null`.chomp if application.empty?
|
50
|
+
application = `which mozilla 2> /dev/null`.chomp if application.empty?
|
51
|
+
application = `which firefox 2> /dev/null`.chomp if application.empty?
|
52
|
+
application = `which opera 2> /dev/null`.chomp if application.empty?
|
53
|
+
application = `which konqueror 2> /dev/null`.chomp if application.empty?
|
54
|
+
application = `which htmlview 2> /dev/null`.chomp if application.empty?
|
55
|
+
application = nil if application.empty?
|
56
|
+
|
57
|
+
application
|
58
|
+
end
|
59
|
+
|
60
|
+
def defaultbrowser
|
61
|
+
res = nil
|
62
|
+
res = windowsbrowser if windows?
|
63
|
+
res = cygwinbrowser if cygwin?
|
64
|
+
res = linuxbrowser if linux?
|
65
|
+
res
|
66
|
+
end
|
67
|
+
|
68
|
+
def showurlinbrowser(url, browser=defaultbrowser)
|
69
|
+
command = "#{browser} \"#{url}\""
|
70
|
+
|
71
|
+
system(command) or $stderr.puts "Starting of the browser failed, or the browser terminated abnormally.\nCommand => #{command}"
|
72
|
+
end
|
73
|
+
|
74
|
+
def showinbrowser(html, browser=defaultbrowser)
|
75
|
+
port, io = TCPServer.freeport(7701, 7709)
|
76
|
+
|
77
|
+
unless browser.nil?
|
78
|
+
Thread.new do
|
79
|
+
begin
|
80
|
+
Thread.pass
|
81
|
+
|
82
|
+
showurlinbrowser("http://localhost:#{port}/", browser)
|
83
|
+
rescue
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
HTTPServer.serve([port, io]) do |req, resp|
|
89
|
+
resp << html
|
90
|
+
|
91
|
+
resp.stop
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def tab2html(tab)
|
96
|
+
res = ""
|
97
|
+
|
98
|
+
tab = tab.to_html(false)
|
99
|
+
|
100
|
+
res << "<html>\n"
|
101
|
+
res << "<body>\n"
|
102
|
+
res << "<table align='center' border='1' cellspacing='0' cellpadding='3'>\n"
|
103
|
+
res << "<tbody>\n"
|
104
|
+
|
105
|
+
tab.split(/\r*\n/).each do |line|
|
106
|
+
res << "<tr>\n"
|
107
|
+
|
108
|
+
line.split(/\t/, -1).each do |veld|
|
109
|
+
veld = " " if veld.compress.empty?
|
110
|
+
|
111
|
+
res << "<td>%s</td>\n" % veld
|
112
|
+
end
|
113
|
+
|
114
|
+
res << "</tr>\n"
|
115
|
+
end
|
116
|
+
|
117
|
+
res << "</tbody>\n"
|
118
|
+
res << "</table>\n"
|
119
|
+
res << "</body>\n"
|
120
|
+
res << "</html>\n"
|
121
|
+
|
122
|
+
res
|
123
|
+
end
|
data/lib/rwd/ftools.rb
ADDED
@@ -0,0 +1,174 @@
|
|
1
|
+
require "ftools"
|
2
|
+
|
3
|
+
class Dir
|
4
|
+
def self.copy(from, to)
|
5
|
+
if File.directory?(from)
|
6
|
+
pdir = Dir.pwd
|
7
|
+
todir = File.expand_path(to)
|
8
|
+
|
9
|
+
File.mkpath(todir)
|
10
|
+
|
11
|
+
Dir.chdir(from)
|
12
|
+
Dir.new(".").each do |e|
|
13
|
+
Dir.copy(e, todir+"/"+e) if not [".", ".."].include?(e)
|
14
|
+
end
|
15
|
+
Dir.chdir(pdir)
|
16
|
+
else
|
17
|
+
todir = File.dirname(File.expand_path(to))
|
18
|
+
|
19
|
+
File.mkpath(todir)
|
20
|
+
|
21
|
+
File.copy(from, to)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.move(from, to)
|
26
|
+
Dir.copy(from, to)
|
27
|
+
Dir.rm_rf(from)
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.rm_rf(entry)
|
31
|
+
File.chmod(0755, entry)
|
32
|
+
|
33
|
+
if File.ftype(entry) == "directory"
|
34
|
+
pdir = Dir.pwd
|
35
|
+
|
36
|
+
Dir.chdir(entry)
|
37
|
+
Dir.new(".").each do |e|
|
38
|
+
Dir.rm_rf(e) if not [".", ".."].include?(e)
|
39
|
+
end
|
40
|
+
Dir.chdir(pdir)
|
41
|
+
|
42
|
+
begin
|
43
|
+
Dir.delete(entry)
|
44
|
+
rescue => e
|
45
|
+
$stderr.puts e.message
|
46
|
+
end
|
47
|
+
else
|
48
|
+
begin
|
49
|
+
File.delete(entry)
|
50
|
+
rescue => e
|
51
|
+
$stderr.puts e.message
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.find(entry=nil, mask=nil)
|
57
|
+
entry = "." if entry.nil?
|
58
|
+
|
59
|
+
entry = entry.gsub(/[\/\\]*$/, "") unless entry.nil?
|
60
|
+
|
61
|
+
mask = /^#{mask}$/i if mask.kind_of?(String)
|
62
|
+
|
63
|
+
res = []
|
64
|
+
|
65
|
+
if File.directory?(entry)
|
66
|
+
pdir = Dir.pwd
|
67
|
+
|
68
|
+
res += ["%s/" % entry] if mask.nil? or entry =~ mask
|
69
|
+
|
70
|
+
begin
|
71
|
+
Dir.chdir(entry)
|
72
|
+
|
73
|
+
begin
|
74
|
+
Dir.new(".").each do |e|
|
75
|
+
res += Dir.find(e, mask).collect{|e| entry+"/"+e} unless [".", ".."].include?(e)
|
76
|
+
end
|
77
|
+
ensure
|
78
|
+
Dir.chdir(pdir)
|
79
|
+
end
|
80
|
+
rescue Errno::EACCES => e
|
81
|
+
$stderr.puts e.message
|
82
|
+
end
|
83
|
+
else
|
84
|
+
res += [entry] if mask.nil? or entry =~ mask
|
85
|
+
end
|
86
|
+
|
87
|
+
res
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
class File
|
92
|
+
def self.rollbackup(file, mode=nil)
|
93
|
+
backupfile = file + ".RB.BACKUP"
|
94
|
+
controlfile = file + ".RB.CONTROL"
|
95
|
+
res = nil
|
96
|
+
|
97
|
+
File.touch(file) unless File.file?(file)
|
98
|
+
|
99
|
+
# Rollback
|
100
|
+
|
101
|
+
if File.file?(backupfile) and File.file?(controlfile)
|
102
|
+
$stderr.puts "Restoring #{file}..."
|
103
|
+
|
104
|
+
File.copy(backupfile, file) # Rollback from phase 3
|
105
|
+
end
|
106
|
+
|
107
|
+
# Reset
|
108
|
+
|
109
|
+
File.delete(backupfile) if File.file?(backupfile) # Reset from phase 2 or 3
|
110
|
+
File.delete(controlfile) if File.file?(controlfile) # Reset from phase 3 or 4
|
111
|
+
|
112
|
+
# Backup
|
113
|
+
|
114
|
+
File.copy(file, backupfile) # Enter phase 2
|
115
|
+
File.touch(controlfile) # Enter phase 3
|
116
|
+
|
117
|
+
# The real thing
|
118
|
+
|
119
|
+
if block_given?
|
120
|
+
if mode.nil?
|
121
|
+
res = yield
|
122
|
+
else
|
123
|
+
File.open(file, mode) do |f|
|
124
|
+
res = yield(f)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
# Cleanup
|
130
|
+
|
131
|
+
File.delete(backupfile) # Enter phase 4
|
132
|
+
File.delete(controlfile) # Enter phase 5
|
133
|
+
|
134
|
+
# Return, like File.open
|
135
|
+
|
136
|
+
res = File.open(file, (mode or "r")) unless block_given?
|
137
|
+
|
138
|
+
res
|
139
|
+
end
|
140
|
+
|
141
|
+
def self.touch(file)
|
142
|
+
if File.exists?(file)
|
143
|
+
File.utime(Time.now, File.mtime(file), file)
|
144
|
+
else
|
145
|
+
File.open(file, "a"){|f|}
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
def self.which(file)
|
150
|
+
res = nil
|
151
|
+
|
152
|
+
if windows?
|
153
|
+
file = file.gsub(/\.exe$/i, "") + ".exe"
|
154
|
+
sep = ";"
|
155
|
+
else
|
156
|
+
sep = ":"
|
157
|
+
end
|
158
|
+
|
159
|
+
catch :stop do
|
160
|
+
ENV["PATH"].split(/#{sep}/).reverse.each do |d|
|
161
|
+
if File.directory?(d)
|
162
|
+
Dir.new(d).each do |e|
|
163
|
+
if e.downcase == file.downcase
|
164
|
+
res = File.expand_path(e, d)
|
165
|
+
throw :stop
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
res
|
173
|
+
end
|
174
|
+
end
|
data/lib/rwd/mime.rb
ADDED
@@ -0,0 +1,328 @@
|
|
1
|
+
module EVMime
|
2
|
+
MimeType = {}
|
3
|
+
|
4
|
+
MimeType['123'] = 'application/vnd.lotus-1-2-3'
|
5
|
+
MimeType['3ds'] = 'image/x-3ds'
|
6
|
+
MimeType['a'] = 'application/x-unix-archive'
|
7
|
+
MimeType['abw'] = 'application/x-abiword'
|
8
|
+
MimeType['ac3'] = 'audio/ac3'
|
9
|
+
MimeType['afm'] = 'application/x-font-afm'
|
10
|
+
MimeType['ag'] = 'image/x-applix-graphic'
|
11
|
+
MimeType['aif'] = 'audio/x-aiff'
|
12
|
+
MimeType['aifc'] = 'audio/x-aiff'
|
13
|
+
MimeType['aiff'] = 'audio/x-aiff'
|
14
|
+
MimeType['ap'] = 'application/x-applix-presents'
|
15
|
+
MimeType['ape'] = 'application/x-ape'
|
16
|
+
MimeType['arj'] = 'application/x-arj'
|
17
|
+
MimeType['as'] = 'application/x-applix-spreadsheet'
|
18
|
+
MimeType['asc'] = 'text/plain'
|
19
|
+
MimeType['asf'] = 'video/x-ms-asf'
|
20
|
+
MimeType['asp'] = 'application/x-asp'
|
21
|
+
MimeType['asx'] = 'audio/x-ms-asx'
|
22
|
+
MimeType['au'] = 'audio/x-ulaw'
|
23
|
+
MimeType['avi'] = 'video/x-msvideo'
|
24
|
+
MimeType['aw'] = 'application/x-applix-word'
|
25
|
+
MimeType['bak'] = 'application/x-backup'
|
26
|
+
MimeType['bcpio'] = 'application/x-bcpio'
|
27
|
+
MimeType['bdf'] = 'application/x-font-bdf'
|
28
|
+
MimeType['bib'] = 'text/bib'
|
29
|
+
MimeType['bin'] = 'application/octet-stream'
|
30
|
+
MimeType['blend'] = 'application/x-blender'
|
31
|
+
MimeType['blender'] = 'application/x-blender'
|
32
|
+
MimeType['bmp'] = 'image/bmp'
|
33
|
+
MimeType['bz'] = 'application/x-bzip'
|
34
|
+
MimeType['bz2'] = 'application/x-bzip'
|
35
|
+
MimeType['c'] = 'text/x-c'
|
36
|
+
MimeType['c++'] = 'text/x-c++'
|
37
|
+
MimeType['cc'] = 'text/x-c++'
|
38
|
+
MimeType['cdf'] = 'application/x-netcdf'
|
39
|
+
MimeType['cdr'] = 'application/vnd.corel-draw'
|
40
|
+
MimeType['cgi'] = 'application/x-cgi'
|
41
|
+
MimeType['cgm'] = 'image/cgm'
|
42
|
+
MimeType['class'] = 'application/x-java-byte-code'
|
43
|
+
MimeType['cls'] = 'text/x-tex'
|
44
|
+
MimeType['cpio'] = 'application/x-cpio'
|
45
|
+
MimeType['cpp'] = 'text/x-c++'
|
46
|
+
MimeType['csh'] = 'text/x-csh'
|
47
|
+
MimeType['css'] = 'text/css'
|
48
|
+
MimeType['csv'] = 'text/x-comma-separated-values'
|
49
|
+
MimeType['dat'] = 'video/mpeg'
|
50
|
+
MimeType['dbf'] = 'application/x-xbase'
|
51
|
+
MimeType['dc'] = 'application/x-dc-rom'
|
52
|
+
MimeType['dcl'] = 'text/x-dcl'
|
53
|
+
MimeType['dcm'] = 'image/x-dcm'
|
54
|
+
MimeType['deb'] = 'application/x-deb'
|
55
|
+
MimeType['desktop'] = 'application/x-gnome-app-info'
|
56
|
+
MimeType['dia'] = 'application/x-dia-diagram'
|
57
|
+
MimeType['diff'] = 'text/x-patch'
|
58
|
+
MimeType['djv'] = 'image/vnd.djvu'
|
59
|
+
MimeType['djvu'] = 'image/vnd.djvu'
|
60
|
+
MimeType['doc'] = 'application/msword'
|
61
|
+
MimeType['dsl'] = 'text/x-dsl'
|
62
|
+
MimeType['dtd'] = 'text/x-dtd'
|
63
|
+
MimeType['dvi'] = 'application/x-dvi'
|
64
|
+
MimeType['dwg'] = 'image/vnd.dwg'
|
65
|
+
MimeType['dxf'] = 'image/vnd.dxf'
|
66
|
+
MimeType['el'] = 'text/x-emacs-lisp'
|
67
|
+
MimeType['emf'] = 'image/x-emf'
|
68
|
+
MimeType['eps'] = 'application/postscript'
|
69
|
+
MimeType['etheme'] = 'application/x-e-theme'
|
70
|
+
MimeType['etx'] = 'text/x-setext'
|
71
|
+
MimeType['exe'] = 'application/x-ms-dos-executable'
|
72
|
+
MimeType['ez'] = 'application/andrew-inset'
|
73
|
+
MimeType['f'] = 'text/x-fortran'
|
74
|
+
MimeType['fig'] = 'image/x-xfig'
|
75
|
+
MimeType['fits'] = 'image/x-fits'
|
76
|
+
MimeType['flac'] = 'audio/x-flac'
|
77
|
+
MimeType['flc'] = 'video/x-flc'
|
78
|
+
MimeType['fli'] = 'video/x-fli'
|
79
|
+
MimeType['gb'] = 'application/x-gameboy-rom'
|
80
|
+
MimeType['gchempaint'] = 'application/x-gchempaint'
|
81
|
+
MimeType['gcrd'] = 'text/x-vcard'
|
82
|
+
MimeType['gcrystal'] = 'application/x-gcrystal'
|
83
|
+
MimeType['gem'] = 'text/x-rubygem'
|
84
|
+
MimeType['gen'] = 'application/x-genesis-rom'
|
85
|
+
MimeType['gg'] = 'application/x-sms-rom'
|
86
|
+
MimeType['gif'] = 'image/gif'
|
87
|
+
MimeType['glade'] = 'application/x-glade'
|
88
|
+
MimeType['gnc'] = 'application/x-gnucash'
|
89
|
+
MimeType['gnucash'] = 'application/x-gnucash'
|
90
|
+
MimeType['gnumeric'] = 'application/x-gnumeric'
|
91
|
+
MimeType['gray'] = 'image/x-gray'
|
92
|
+
MimeType['gtar'] = 'application/x-gtar'
|
93
|
+
MimeType['gz'] = 'application/x-gzip'
|
94
|
+
MimeType['h'] = 'text/x-c-header'
|
95
|
+
MimeType['h++'] = 'text/x-c-header'
|
96
|
+
MimeType['hdf'] = 'application/x-hdf'
|
97
|
+
MimeType['hlls'] = 'text/x-hllapiscript'
|
98
|
+
MimeType['hpp'] = 'text/x-c-header'
|
99
|
+
MimeType['hs'] = 'text/x-haskell'
|
100
|
+
MimeType['htm'] = 'text/html'
|
101
|
+
MimeType['html'] = 'text/html'
|
102
|
+
MimeType['icb'] = 'image/x-icb'
|
103
|
+
MimeType['ico'] = 'image/x-ico'
|
104
|
+
MimeType['ics'] = 'text/calendar'
|
105
|
+
MimeType['idl'] = 'text/x-idl'
|
106
|
+
MimeType['ief'] = 'image/ief'
|
107
|
+
MimeType['iff'] = 'image/x-iff'
|
108
|
+
MimeType['ilbm'] = 'image/x-ilbm'
|
109
|
+
MimeType['iso'] = 'application/x-iso-image'
|
110
|
+
MimeType['it'] = 'audio/x-it'
|
111
|
+
MimeType['jar'] = 'application/x-java-archive'
|
112
|
+
MimeType['java'] = 'text/x-java'
|
113
|
+
MimeType['jpe'] = 'image/jpeg'
|
114
|
+
MimeType['jpeg'] = 'image/jpeg'
|
115
|
+
MimeType['jpg'] = 'image/jpeg'
|
116
|
+
MimeType['jpr'] = 'application/x-jbuilder-project'
|
117
|
+
MimeType['jpx'] = 'application/x-jbuilder-project'
|
118
|
+
MimeType['js'] = 'text/x-javascript'
|
119
|
+
MimeType['kdelnk'] = 'application/x-kde-app-info'
|
120
|
+
MimeType['kil'] = 'application/x-killustrator'
|
121
|
+
MimeType['kpr'] = 'application/x-kpresenter'
|
122
|
+
MimeType['ksp'] = 'application/x-kspread'
|
123
|
+
MimeType['kwd'] = 'application/x-kword'
|
124
|
+
MimeType['la'] = 'application/x-shared-library-la'
|
125
|
+
MimeType['lha'] = 'application/x-lha'
|
126
|
+
MimeType['lhs'] = 'text/x-literate-haskell'
|
127
|
+
MimeType['lhz'] = 'application/x-lhz'
|
128
|
+
MimeType['lo'] = 'application/x-object-file'
|
129
|
+
MimeType['ltx'] = 'text/x-tex'
|
130
|
+
MimeType['lwo'] = 'image/x-lwo'
|
131
|
+
MimeType['lwob'] = 'image/x-lwo'
|
132
|
+
MimeType['lws'] = 'image/x-lws'
|
133
|
+
MimeType['lyx'] = 'text/x-lyx'
|
134
|
+
MimeType['m'] = 'text/x-objc'
|
135
|
+
MimeType['m3u'] = 'audio/x-mpegurl'
|
136
|
+
MimeType['m4a'] = 'audio/x-m4a'
|
137
|
+
MimeType['man'] = 'text/x-troff-man'
|
138
|
+
MimeType['md'] = 'application/x-genesis-rom'
|
139
|
+
MimeType['me'] = 'text/x-troff-me'
|
140
|
+
MimeType['mgp'] = 'application/x-magicpoint'
|
141
|
+
MimeType['mid'] = 'audio/x-midi'
|
142
|
+
MimeType['midi'] = 'audio/x-midi'
|
143
|
+
MimeType['mif'] = 'application/x-mif'
|
144
|
+
MimeType['miff'] = 'image/x-miff'
|
145
|
+
MimeType['mm'] = 'text/x-troff-mm'
|
146
|
+
MimeType['mml'] = 'text/mathml'
|
147
|
+
MimeType['mod'] = 'audio/x-mod'
|
148
|
+
MimeType['mov'] = 'video/quicktime'
|
149
|
+
MimeType['movie'] = 'video/x-sgi-movie'
|
150
|
+
MimeType['mp1'] = 'audio/mpeg'
|
151
|
+
MimeType['mp2'] = 'video/mpeg'
|
152
|
+
MimeType['mp3'] = 'audio/mpeg'
|
153
|
+
MimeType['mpe'] = 'video/mpeg'
|
154
|
+
MimeType['mpeg'] = 'video/mpeg'
|
155
|
+
MimeType['mpg'] = 'video/mpeg'
|
156
|
+
MimeType['mrp'] = 'application/x-mrproject'
|
157
|
+
MimeType['mrproject'] = 'application/x-mrproject'
|
158
|
+
MimeType['ms'] = 'text/x-troff-ms'
|
159
|
+
MimeType['msx'] = 'application/x-msx-rom'
|
160
|
+
MimeType['n64'] = 'application/x-n64-rom'
|
161
|
+
MimeType['nc'] = 'application/x-netcdf'
|
162
|
+
MimeType['nes'] = 'application/x-nes-rom'
|
163
|
+
MimeType['nsv'] = 'video/x-nsv'
|
164
|
+
MimeType['o'] = 'application/x-object-file'
|
165
|
+
MimeType['oda'] = 'application/oda'
|
166
|
+
MimeType['ogg'] = 'application/ogg'
|
167
|
+
MimeType['oleo'] = 'application/x-oleo'
|
168
|
+
MimeType['p'] = 'text/x-pascal'
|
169
|
+
MimeType['palm'] = 'image/x-palm'
|
170
|
+
MimeType['pas'] = 'text/x-pascal'
|
171
|
+
MimeType['pascal'] = 'text/x-pascal'
|
172
|
+
MimeType['patch'] = 'text/x-patch'
|
173
|
+
MimeType['pbm'] = 'image/x-portable-bitmap'
|
174
|
+
MimeType['pcd'] = 'image/x-photo-cd'
|
175
|
+
MimeType['pcf'] = 'application/x-font-pcf'
|
176
|
+
MimeType['pct'] = 'image/x-pict'
|
177
|
+
MimeType['pcx'] = 'image/x-pcx'
|
178
|
+
MimeType['pdb'] = 'application/x-palm-database'
|
179
|
+
MimeType['pdf'] = 'application/pdf'
|
180
|
+
MimeType['perl'] = 'text/x-perl'
|
181
|
+
MimeType['pfa'] = 'application/x-font-type1'
|
182
|
+
MimeType['pfb'] = 'application/x-font-type1'
|
183
|
+
MimeType['pgm'] = 'image/x-portable-graymap'
|
184
|
+
MimeType['pgn'] = 'application/x-chess-pgn'
|
185
|
+
MimeType['pgp'] = 'application/pgp'
|
186
|
+
MimeType['php'] = 'application/x-php'
|
187
|
+
MimeType['php3'] = 'application/x-php'
|
188
|
+
MimeType['php4'] = 'application/x-php'
|
189
|
+
MimeType['pict'] = 'image/x-pict'
|
190
|
+
MimeType['pl'] = 'text/x-perl'
|
191
|
+
MimeType['pls'] = 'audio/x-scpls'
|
192
|
+
MimeType['pm'] = 'text/x-perl'
|
193
|
+
MimeType['png'] = 'image/png'
|
194
|
+
MimeType['pnm'] = 'image/x-portable-anymap'
|
195
|
+
MimeType['po'] = 'text/x-po'
|
196
|
+
MimeType['pp'] = 'text/x-pascal'
|
197
|
+
MimeType['ppm'] = 'image/x-portable-pixmap'
|
198
|
+
MimeType['pps'] = 'application/vnd.ms-powerpoint'
|
199
|
+
MimeType['ppt'] = 'application/vnd.ms-powerpoint'
|
200
|
+
MimeType['ps'] = 'application/postscript'
|
201
|
+
MimeType['psd'] = 'image/x-psd'
|
202
|
+
MimeType['psf'] = 'application/x-font-linux-psf'
|
203
|
+
MimeType['psid'] = 'audio/prs.sid'
|
204
|
+
MimeType['py'] = 'text/x-python'
|
205
|
+
MimeType['pyc'] = 'application/x-python-byte-code'
|
206
|
+
MimeType['qif'] = 'application/qif'
|
207
|
+
MimeType['qt'] = 'video/quicktime'
|
208
|
+
MimeType['ra'] = 'audio/x-real-audio'
|
209
|
+
MimeType['ram'] = 'audio/x-pn-realaudio'
|
210
|
+
MimeType['rar'] = 'application/x-rar'
|
211
|
+
MimeType['ras'] = 'image/x-cmu-raster'
|
212
|
+
MimeType['rb'] = 'text/x-ruby'
|
213
|
+
MimeType['rba'] = 'text/x-ruby'
|
214
|
+
MimeType['rbw'] = 'text/x-ruby'
|
215
|
+
MimeType['rej'] = 'application/x-reject'
|
216
|
+
MimeType['rgb'] = 'image/x-rgb'
|
217
|
+
MimeType['rm'] = 'audio/x-real-audio'
|
218
|
+
MimeType['roff'] = 'text/x-troff'
|
219
|
+
MimeType['rpm'] = 'application/x-rpm'
|
220
|
+
MimeType['rtf'] = 'application/rtf'
|
221
|
+
MimeType['rtx'] = 'text/richtext'
|
222
|
+
MimeType['ruby'] = 'text/x-ruby'
|
223
|
+
MimeType['rubyw'] = 'text/x-ruby'
|
224
|
+
MimeType['rv'] = 'audio/x-real-audio'
|
225
|
+
MimeType['s'] = 'text/x-asm'
|
226
|
+
MimeType['s3m'] = 'audio/x-s3m'
|
227
|
+
MimeType['scm'] = 'text/x-scheme'
|
228
|
+
MimeType['sda'] = 'application/vnd.stardivision.draw'
|
229
|
+
MimeType['sdc'] = 'application/vnd.stardivision.calc'
|
230
|
+
MimeType['sdd'] = 'application/vnd.stardivision.impress'
|
231
|
+
MimeType['sdp'] = 'application/vnd.stardivision.impress'
|
232
|
+
MimeType['sds'] = 'application/vnd.stardivision.chart'
|
233
|
+
MimeType['sdw'] = 'application/vnd.stardivision.writer'
|
234
|
+
MimeType['sgi'] = 'image/x-sgi'
|
235
|
+
MimeType['sgl'] = 'application/vnd.stardivision.writer'
|
236
|
+
MimeType['sgm'] = 'text/sgml'
|
237
|
+
MimeType['sgml'] = 'text/sgml'
|
238
|
+
MimeType['sh'] = 'text/x-sh'
|
239
|
+
MimeType['shar'] = 'application/x-shar'
|
240
|
+
MimeType['sid'] = 'audio/prs.sid'
|
241
|
+
MimeType['slk'] = 'text/spreadsheet'
|
242
|
+
MimeType['smd'] = 'application/vnd.stardivision.mail'
|
243
|
+
MimeType['smf'] = 'application/vnd.stardivision.math'
|
244
|
+
MimeType['smi'] = 'application/x-smil'
|
245
|
+
MimeType['smil'] = 'application/x-smil'
|
246
|
+
MimeType['sml'] = 'application/x-smil'
|
247
|
+
MimeType['sms'] = 'application/x-sms-rom'
|
248
|
+
MimeType['snd'] = 'audio/basic'
|
249
|
+
MimeType['so'] = 'application/x-shared-library'
|
250
|
+
MimeType['spd'] = 'application/x-font-speedo'
|
251
|
+
MimeType['sql'] = 'text/x-sql'
|
252
|
+
MimeType['src'] = 'application/x-wais-source'
|
253
|
+
MimeType['stc'] = 'application/vnd.sun.xml.calc.template'
|
254
|
+
MimeType['std'] = 'application/vnd.sun.xml.draw.template'
|
255
|
+
MimeType['sti'] = 'application/vnd.sun.xml.impress.template'
|
256
|
+
MimeType['stm'] = 'audio/x-stm'
|
257
|
+
MimeType['stw'] = 'application/vnd.sun.xml.writer.template'
|
258
|
+
MimeType['sty'] = 'text/x-tex'
|
259
|
+
MimeType['sun'] = 'image/x-sun-raster'
|
260
|
+
MimeType['sv4cpio'] = 'application/x-sv4cpio'
|
261
|
+
MimeType['sv4crc'] = 'application/x-sv4crc'
|
262
|
+
MimeType['svg'] = 'image/svg+xml'
|
263
|
+
MimeType['svgz'] = 'image/svg+xml'
|
264
|
+
MimeType['swf'] = 'application/x-shockwave-flash'
|
265
|
+
MimeType['sxc'] = 'application/vnd.sun.xml.calc'
|
266
|
+
MimeType['sxd'] = 'application/vnd.sun.xml.draw'
|
267
|
+
MimeType['sxg'] = 'application/vnd.sun.xml.writer.global'
|
268
|
+
MimeType['sxi'] = 'application/vnd.sun.xml.impress'
|
269
|
+
MimeType['sxm'] = 'application/vnd.sun.xml.math'
|
270
|
+
MimeType['sxw'] = 'application/vnd.sun.xml.writer'
|
271
|
+
MimeType['sylk'] = 'text/spreadsheet'
|
272
|
+
MimeType['t'] = 'text/x-troff'
|
273
|
+
MimeType['tar'] = 'application/x-tar'
|
274
|
+
MimeType['tcl'] = 'text/x-tcl'
|
275
|
+
MimeType['tex'] = 'text/x-tex'
|
276
|
+
MimeType['texi'] = 'text/x-texinfo'
|
277
|
+
MimeType['texinfo'] = 'text/x-texinfo'
|
278
|
+
MimeType['tga'] = 'image/x-tga'
|
279
|
+
MimeType['tgz'] = 'application/x-compressed-tar'
|
280
|
+
MimeType['theme'] = 'application/x-theme'
|
281
|
+
MimeType['tif'] = 'image/tiff'
|
282
|
+
MimeType['tiff'] = 'image/tiff'
|
283
|
+
MimeType['torrent'] = 'application/x-bittorrent'
|
284
|
+
MimeType['tr'] = 'text/x-troff'
|
285
|
+
MimeType['tsv'] = 'text/tab-separated-values'
|
286
|
+
MimeType['ttc'] = 'application/x-font-ttf'
|
287
|
+
MimeType['ttf'] = 'application/x-font-ttf'
|
288
|
+
MimeType['txt'] = 'text/plain'
|
289
|
+
MimeType['ustar'] = 'application/x-ustar'
|
290
|
+
MimeType['vcf'] = 'text/x-vcalendar'
|
291
|
+
MimeType['vcs'] = 'text/x-vcalendar'
|
292
|
+
MimeType['vi'] = 'text/x-vi'
|
293
|
+
MimeType['vim'] = 'text/x-vi'
|
294
|
+
MimeType['viv'] = 'video/vnd.vivo'
|
295
|
+
MimeType['vivo'] = 'video/vnd.vivo'
|
296
|
+
MimeType['vob'] = 'video/mpeg'
|
297
|
+
MimeType['voc'] = 'audio/x-voc'
|
298
|
+
MimeType['vor'] = 'application/vnd.stardivision.writer'
|
299
|
+
MimeType['wav'] = 'audio/x-wav'
|
300
|
+
MimeType['wax'] = 'audio/x-ms-asx'
|
301
|
+
MimeType['wk1'] = 'application/vnd.lotus-1-2-3'
|
302
|
+
MimeType['wk3'] = 'application/vnd.lotus-1-2-3'
|
303
|
+
MimeType['wk4'] = 'application/vnd.lotus-1-2-3'
|
304
|
+
MimeType['wks'] = 'application/vnd.lotus-1-2-3'
|
305
|
+
MimeType['wmf'] = 'image/x-wmf'
|
306
|
+
MimeType['wmv'] = 'video/x-ms-wmv'
|
307
|
+
MimeType['wrl'] = 'model/vrml'
|
308
|
+
MimeType['wvx'] = 'video/x-ms-wvx'
|
309
|
+
MimeType['xac'] = 'application/x-gnucash'
|
310
|
+
MimeType['xbel'] = 'application/xbel'
|
311
|
+
MimeType['xbm'] = 'image/x-xbitmap'
|
312
|
+
MimeType['xcf'] = 'image/x-xcf'
|
313
|
+
MimeType['xi'] = 'audio/x-xi'
|
314
|
+
MimeType['xla'] = 'application/vnd.ms-excel'
|
315
|
+
MimeType['xlc'] = 'application/vnd.ms-excel'
|
316
|
+
MimeType['xld'] = 'application/vnd.ms-excel'
|
317
|
+
MimeType['xls'] = 'application/vnd.ms-excel'
|
318
|
+
MimeType['xlt'] = 'application/vnd.ms-excel'
|
319
|
+
MimeType['xm'] = 'audio/x-xm'
|
320
|
+
MimeType['xml'] = 'text/xml'
|
321
|
+
MimeType['xpm'] = 'image/x-xpixmap'
|
322
|
+
MimeType['xwd'] = 'image/x-xwindowdump'
|
323
|
+
MimeType['y'] = 'text/x-yacc'
|
324
|
+
MimeType['yacc'] = 'text/x-yacc'
|
325
|
+
MimeType['z'] = 'application/x-compress'
|
326
|
+
MimeType['zip'] = 'application/zip'
|
327
|
+
MimeType['zoo'] = 'application/x-zoo'
|
328
|
+
end
|