mime-types 1.15 → 1.16
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.tar.gz.sig +2 -0
- data/{ChangeLog → History.txt} +21 -15
- data/Install.txt +17 -0
- data/{LICENCE → Licence.txt} +0 -3
- data/Manifest.txt +12 -0
- data/README.txt +28 -0
- data/Rakefile +268 -160
- data/lib/mime/types.rb +109 -916
- data/lib/mime/types.rb.data +1324 -0
- data/mime-types.gemspec +43 -0
- data/setup.rb +799 -580
- data/test/test_mime_type.rb +356 -0
- data/test/test_mime_types.rb +122 -0
- metadata +120 -51
- metadata.gz.sig +0 -0
- data/Install +0 -16
- data/README +0 -30
- data/pre-setup.rb +0 -46
- data/tests/tc_mime_type.rb +0 -275
- data/tests/tc_mime_types.rb +0 -77
- data/tests/testall.rb +0 -18
data.tar.gz.sig
ADDED
data/{ChangeLog → History.txt}
RENAMED
@@ -1,7 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
== MIME::Types 1.16
|
2
|
+
* Made compatible with Ruby 1.8.6, 1.8.7, and 1.9.1.
|
3
|
+
* Switched to the 'hoe' gem system and added a lot of build-time tools.
|
4
|
+
* Updated the MIME types to the list based on the values in the Perl library
|
5
|
+
version 1.27. Also updated based on external source information and bug
|
6
|
+
reports.
|
7
|
+
* This is the last planned version of MIME::Types 1.x. Work will be
|
8
|
+
starting soon on MIME::Types 2.x with richer data querying mechanisms
|
9
|
+
and support for external data sources.
|
5
10
|
|
6
11
|
== MIME::Types 1.15
|
7
12
|
* Removed lib/mime/type.rb to form a single MIME::Types database source. It
|
@@ -26,7 +31,7 @@ Ziegler <mime-types@halostatue.ca>.
|
|
26
31
|
MIME::Types implementation (1.13). Do not rely on these until the purpose
|
27
32
|
and implementation is stabilised.
|
28
33
|
* Updated the MIME list to reflect changes noted by
|
29
|
-
Ville
|
34
|
+
Ville Skyttä <ville.skytta@iki.fi>.
|
30
35
|
* Added a new constant to MIME::Types, DATA_VERSION. This will allow the Ruby
|
31
36
|
version number to be updated separately from the Perl version while keeping
|
32
37
|
the MIME Type list version in sync.
|
@@ -73,7 +78,7 @@ Ziegler <mime-types@halostatue.ca>.
|
|
73
78
|
== MIME::Types 1.07
|
74
79
|
* Changed version numbering to match Perl MIME::Types 1.07.
|
75
80
|
* Re-synchronized with Mark Overmeer's list in Perl PMIME::Types 1.07.
|
76
|
-
|
81
|
+
* [NN Poster] updated the attributes for the PGP types.
|
77
82
|
|
78
83
|
== MIME::Types 1.005
|
79
84
|
* Changed to Phil Thomson's InstallPackage.
|
@@ -90,12 +95,13 @@ Ziegler <mime-types@halostatue.ca>.
|
|
90
95
|
== MIME::Types 1.003
|
91
96
|
* Initial release based on Perl MIME::Types 1.003.
|
92
97
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
98
|
+
== Copyright
|
99
|
+
MIME::Types
|
100
|
+
A Ruby implementation of a MIME Types information library. Based in spirit
|
101
|
+
on the Perl MIME::Types information library by Mark Overmeer.
|
102
|
+
http://rubyforge.org/projects/mime-types/
|
103
|
+
|
104
|
+
Licensed under the Ruby disjunctive licence with the GNU GPL or the Perl
|
105
|
+
Artistic licence. See Licence.txt for more information.
|
106
|
+
|
107
|
+
Copyright 2003 - 2009 Austin Ziegler
|
data/Install.txt
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
Installing this package is as simple as:
|
2
|
+
|
3
|
+
% ruby setup.rb
|
4
|
+
|
5
|
+
Alternatively, you can use the Gem version of MIME::Types available as
|
6
|
+
mime-types-1.16.gem from the usual sources.
|
7
|
+
|
8
|
+
== Copyright
|
9
|
+
MIME::Types
|
10
|
+
A Ruby implementation of a MIME Types information library. Based in spirit
|
11
|
+
on the Perl MIME::Types information library by Mark Overmeer.
|
12
|
+
http://rubyforge.org/projects/mime-types/
|
13
|
+
|
14
|
+
Licensed under the Ruby disjunctive licence with the GNU GPL or the Perl
|
15
|
+
Artistic licence. See Licence.txt for more information.
|
16
|
+
|
17
|
+
Copyright 2003 - 2009 Austin Ziegler
|
data/{LICENCE → Licence.txt}
RENAMED
@@ -13,6 +13,3 @@ http://www.perl.com/pub/a/language/misc/Artistic.html
|
|
13
13
|
The text of the GNU GPL can be found at: http://www.gnu.org/copyleft/gpl.html
|
14
14
|
|
15
15
|
If you do not accept one of these licences, you may not use this software.
|
16
|
-
|
17
|
-
$Id: LICENCE,v 1.1 2006/02/12 21:27:21 austin Exp $
|
18
|
-
# vim: sts=2 sw=2 ts=4 et ai tw=77
|
data/Manifest.txt
ADDED
data/README.txt
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
= README: Mime::Types for Ruby
|
2
|
+
This library allows for the identification of a file's likely MIME content
|
3
|
+
type. This is release 1.16. The identification of MIME content type is based
|
4
|
+
on a file's filename extensions.
|
5
|
+
|
6
|
+
MIME::Types for Ruby originally based on and synchronized with MIME::Types
|
7
|
+
for Perl by Mark Overmeer, copyright 2001 - 2009. As of version 1.15, the
|
8
|
+
data format for the MIME::Type list has changed and the synchronization will
|
9
|
+
no longer happen.
|
10
|
+
|
11
|
+
Homepage:: http://mime-types.rubyforge.org/
|
12
|
+
Copyright:: 2002 - 2009, Austin Ziegler
|
13
|
+
Based in part on prior work copyright Mark Overmeer
|
14
|
+
|
15
|
+
== Licensing
|
16
|
+
MIME::Types is available under three disjunctive licences, as detailed in the
|
17
|
+
Licence.txt file.
|
18
|
+
|
19
|
+
== Copyright
|
20
|
+
MIME::Types
|
21
|
+
A Ruby implementation of a MIME Types information library. Based in spirit
|
22
|
+
on the Perl MIME::Types information library by Mark Overmeer.
|
23
|
+
http://rubyforge.org/projects/mime-types/
|
24
|
+
|
25
|
+
Licensed under the Ruby disjunctive licence with the GNU GPL or the Perl
|
26
|
+
Artistic licence. See Licence.txt for more information.
|
27
|
+
|
28
|
+
Copyright 2003 - 2009 Austin Ziegler
|
data/Rakefile
CHANGED
@@ -1,208 +1,316 @@
|
|
1
1
|
#! /usr/bin/env rake
|
2
2
|
#--
|
3
|
-
# MIME::Types
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
3
|
+
# MIME::Types
|
4
|
+
# A Ruby implementation of a MIME Types information library. Based in spirit
|
5
|
+
# on the Perl MIME::Types information library by Mark Overmeer.
|
6
|
+
# http://rubyforge.org/projects/mime-types/
|
7
7
|
#
|
8
|
-
#
|
8
|
+
# Licensed under the Ruby disjunctive licence with the GNU GPL or the Perl
|
9
|
+
# Artistic licence. See Licence.txt for more information.
|
10
|
+
#
|
11
|
+
# Copyright 2003 - 2009 Austin Ziegler
|
9
12
|
#++
|
10
|
-
require 'meta_project'
|
11
|
-
require 'rake/gempackagetask'
|
12
|
-
require 'rake/contrib/xforge'
|
13
|
-
require 'rake/clean'
|
14
|
-
|
15
|
-
require 'gmailer'
|
16
13
|
|
17
|
-
require '
|
18
|
-
require '
|
14
|
+
require 'rubygems'
|
15
|
+
require 'hoe'
|
19
16
|
|
20
17
|
$LOAD_PATH.unshift('lib')
|
21
18
|
|
22
19
|
require 'mime/types'
|
23
20
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
21
|
+
PKG_NAME = 'mime-types'
|
22
|
+
PKG_VERSION = MIME::Types::VERSION
|
23
|
+
PKG_DIST = "#{PKG_NAME}-#{PKG_VERSION}"
|
24
|
+
PKG_TAR = "pkg/#{PKG_DIST}.tar.gz"
|
25
|
+
MANIFEST = File.read("Manifest.txt").split
|
29
26
|
|
30
|
-
|
31
|
-
|
27
|
+
hoe = Hoe.new PKG_NAME, PKG_VERSION do |p|
|
28
|
+
p.rubyforge_name = PKG_NAME
|
29
|
+
# This is a lie because I will continue to use Archive::Tar::Minitar.
|
30
|
+
p.need_tar = false
|
31
|
+
# need_zip - Should package create a zipfile? [default: false]
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
p.author = [ "Austin Ziegler" ]
|
34
|
+
p.email = %W(austin@rubyforge.org)
|
35
|
+
p.url = "http://mime-types.rubyforge.org/"
|
36
|
+
p.summary = %q{Manages a MIME Content-Type database that will return the Content-Type for a given filename.}
|
37
|
+
p.changes = p.paragraphs_of("History.txt", 0..0).join("\n\n")
|
38
|
+
p.description = p.paragraphs_of("README.txt", 1..1).join("\n\n")
|
37
39
|
|
38
|
-
|
40
|
+
p.extra_dev_deps << %w(archive-tar-minitar ~>0.5)
|
41
|
+
p.extra_dev_deps << %w(nokogiri ~>1.2)
|
42
|
+
p.extra_dev_deps << %w(rcov ~>0.8)
|
39
43
|
|
40
|
-
|
41
|
-
$stderr.puts "Checking for test cases:" if t.verbose
|
42
|
-
Dir['tests/tc_*.rb'].each do |testcase|
|
43
|
-
$stderr.puts "\t#{testcase}" if t.verbose
|
44
|
-
load testcase
|
45
|
-
end
|
44
|
+
p.clean_globs << "coverage"
|
46
45
|
|
47
|
-
|
46
|
+
p.spec_extras[:extra_rdoc_files] = MANIFEST.grep(/txt$/) - ["Manifest.txt"]
|
47
|
+
end
|
48
48
|
|
49
|
-
|
50
|
-
|
49
|
+
begin
|
50
|
+
require 'rcov/rcovtask'
|
51
|
+
Rcov::RcovTask.new do |t|
|
52
|
+
t.libs << 'test'
|
53
|
+
t.test_files = hoe.test_files
|
54
|
+
t.verbose = true
|
51
55
|
end
|
52
|
-
|
53
|
-
|
56
|
+
rescue LoadError
|
57
|
+
puts "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
54
58
|
end
|
55
59
|
|
56
|
-
|
57
|
-
task
|
58
|
-
|
59
|
-
|
60
|
-
|
60
|
+
=begin
|
61
|
+
require 'cucumber/rake/task'
|
62
|
+
Cucumber::Rake::Task.new(:features)
|
63
|
+
rescue LoadError
|
64
|
+
puts "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
|
65
|
+
=end
|
66
|
+
|
67
|
+
desc "Build a MIME::Types .tar.gz distribution."
|
68
|
+
task :tar => [ PKG_TAR ]
|
69
|
+
file PKG_TAR => [ :test ] do |t|
|
70
|
+
require 'archive/tar/minitar'
|
71
|
+
require 'zlib'
|
72
|
+
files = MANIFEST.map { |f|
|
73
|
+
fn = File.join(PKG_DIST, f)
|
74
|
+
tm = File.stat(f).mtime
|
75
|
+
|
76
|
+
if File.directory?(f)
|
77
|
+
{ :name => fn, :mode => 0755, :dir => true, :mtime => tm }
|
78
|
+
else
|
79
|
+
mode = if f =~ %r{^bin}
|
80
|
+
0755
|
81
|
+
else
|
82
|
+
0644
|
83
|
+
end
|
84
|
+
data = File.read(f)
|
85
|
+
{ :name => fn, :mode => mode, :data => data, :size => data.size,
|
86
|
+
:mtime => tm }
|
87
|
+
end
|
88
|
+
}
|
89
|
+
|
90
|
+
begin
|
91
|
+
unless File.directory?(File.dirname(t.name))
|
92
|
+
require 'fileutils'
|
93
|
+
FileUtils.mkdir_p File.dirname(t.name)
|
94
|
+
end
|
95
|
+
tf = File.open(t.name, 'wb')
|
96
|
+
gz = Zlib::GzipWriter.new(tf)
|
97
|
+
tw = Archive::Tar::Minitar::Writer.new(gz)
|
98
|
+
|
99
|
+
files.each do |entry|
|
100
|
+
if entry[:dir]
|
101
|
+
tw.mkdir(entry[:name], entry)
|
102
|
+
else
|
103
|
+
tw.add_file_simple(entry[:name], entry) { |os|
|
104
|
+
os.write(entry[:data])
|
105
|
+
}
|
106
|
+
end
|
107
|
+
end
|
108
|
+
ensure
|
109
|
+
tw.close if tw
|
110
|
+
gz.close if gz
|
61
111
|
end
|
62
112
|
end
|
113
|
+
task :package => [ PKG_TAR ]
|
114
|
+
|
115
|
+
desc "Build the manifest file from the current set of files."
|
116
|
+
task :build_manifest do |t|
|
117
|
+
require 'find'
|
118
|
+
|
119
|
+
hoerc = File.join(File.dirname(__FILE__), ".hoerc")
|
120
|
+
hoerc = File.open(hoerc, "rb") { |f| f.read }
|
121
|
+
hoerc = YAML::load(hoerc)
|
122
|
+
|
123
|
+
paths = []
|
124
|
+
Find.find(".") do |path|
|
125
|
+
next if File.directory?(path) || path =~ hoerc["exclude"]
|
126
|
+
paths << path.sub(%r{^\./}, '')
|
127
|
+
end
|
128
|
+
|
129
|
+
paths = paths.sort.join("\n")
|
130
|
+
|
131
|
+
File.open("Manifest.txt", "w") do |f|
|
132
|
+
f.puts paths
|
133
|
+
end
|
63
134
|
|
64
|
-
|
65
|
-
spec.version = $version
|
66
|
-
desc "Build the RubyGem for #$name."
|
67
|
-
task :gem => [ :test ]
|
68
|
-
Rake::GemPackageTask.new(spec) do |g|
|
69
|
-
g.need_tar = false
|
70
|
-
g.need_zip = false
|
71
|
-
g.package_dir = ".."
|
135
|
+
puts paths
|
72
136
|
end
|
73
137
|
|
74
|
-
desc "
|
75
|
-
task :
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
138
|
+
desc "Download the current MIME type registrations from IANA."
|
139
|
+
task :iana, :save, :destination do |t, args|
|
140
|
+
save_type = args.save || :text
|
141
|
+
save_type = save_type.to_sym
|
142
|
+
|
143
|
+
case save_type
|
144
|
+
when :text, :both, :html
|
145
|
+
nil
|
146
|
+
else
|
147
|
+
raise "Unknown save type provided. Must be one of text, both, or html."
|
148
|
+
end
|
149
|
+
|
150
|
+
destination = args.destination || "type-lists"
|
151
|
+
|
152
|
+
require 'open-uri'
|
153
|
+
require 'nokogiri'
|
154
|
+
require 'cgi'
|
155
|
+
|
156
|
+
class IANAParser
|
157
|
+
include Comparable
|
158
|
+
|
159
|
+
INDEX = %q(http://www.iana.org/assignments/media-types/)
|
160
|
+
CONTACT_PEOPLE = %r{http://www.iana.org/assignments/contact-people.html?#(.*)}
|
161
|
+
RFC_EDITOR = %r{http://www.rfc-editor.org/rfc/rfc(\d+).txt}
|
162
|
+
IETF_RFC = %r{http://www.ietf.org/rfc/rfc(\d+).txt}
|
163
|
+
IETF_RFC_TOOLS = %r{http://tools.ietf.org/html/rfc(\d+)}
|
164
|
+
|
165
|
+
class << self
|
166
|
+
def load_index
|
167
|
+
@types ||= {}
|
168
|
+
|
169
|
+
Nokogiri::HTML(open(INDEX) { |f| f.read }).xpath('//p/a').each do |tag|
|
170
|
+
href_match = %r{^/assignments/media-types/(.+)/$}.match(tag['href'])
|
171
|
+
next if href_match.nil?
|
172
|
+
type = href_match.captures[0]
|
173
|
+
@types[tag.content] = IANAParser.new(tag.content, type)
|
97
174
|
end
|
98
175
|
end
|
99
176
|
|
100
|
-
|
101
|
-
|
102
|
-
|
177
|
+
attr_reader :types
|
178
|
+
end
|
179
|
+
|
180
|
+
def initialize(name, type)
|
181
|
+
@name = name
|
182
|
+
@type = type
|
183
|
+
@url = File.join(INDEX, @type)
|
184
|
+
end
|
185
|
+
|
186
|
+
attr_reader :name
|
187
|
+
attr_reader :type
|
188
|
+
attr_reader :url
|
189
|
+
attr_reader :html
|
190
|
+
|
191
|
+
def download(name = nil)
|
192
|
+
@html = Nokogiri::HTML(open(name || @url) { |f| f.read })
|
193
|
+
end
|
194
|
+
|
195
|
+
def save_html
|
196
|
+
File.open("#@name.html", "wb") { |w| w.write @html }
|
197
|
+
end
|
198
|
+
|
199
|
+
def <=>(o)
|
200
|
+
self.name <=> o.name
|
201
|
+
end
|
202
|
+
|
203
|
+
def parse
|
204
|
+
nodes = html.xpath("//table//table//tr")
|
205
|
+
|
206
|
+
# How many <td> children does the first node have?
|
207
|
+
node_count = nodes.first.children.select { |node| node.elem? }.size
|
208
|
+
|
209
|
+
@mime_types = nodes.map do |node|
|
210
|
+
next if node == nodes.first
|
211
|
+
elems = node.children.select { |n| n.elem? }
|
212
|
+
next if elems.size.zero?
|
213
|
+
raise "size mismatch #{elems.size} != #{node_count}" if node_count != elems.size
|
103
214
|
|
104
|
-
|
105
|
-
|
106
|
-
|
215
|
+
case elems.size
|
216
|
+
when 3
|
217
|
+
subtype_index = 1
|
218
|
+
refnode_index = 2
|
219
|
+
when 4
|
220
|
+
subtype_index = 1
|
221
|
+
refnode_index = 3
|
107
222
|
else
|
108
|
-
|
223
|
+
raise "Unknown element size."
|
109
224
|
end
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
225
|
+
|
226
|
+
subtype = elems[subtype_index].content.chomp.strip
|
227
|
+
refnodes = elems[refnode_index].children.select { |n| n.elem? }.map { |ref|
|
228
|
+
case ref['href']
|
229
|
+
when CONTACT_PEOPLE
|
230
|
+
tag = CGI::unescape($1).chomp.strip
|
231
|
+
if tag == ref.content
|
232
|
+
"[#{ref.content}]"
|
233
|
+
else
|
234
|
+
"[#{ref.content}=#{tag}]"
|
235
|
+
end
|
236
|
+
when RFC_EDITOR, IETF_RFC, IETF_RFC_TOOLS
|
237
|
+
"RFC#$1"
|
238
|
+
when %r{(https?://.*)}
|
239
|
+
"{#{ref.content}=#$1}"
|
240
|
+
else
|
241
|
+
ref
|
242
|
+
end
|
243
|
+
}
|
244
|
+
refs = refnodes.join(',')
|
245
|
+
|
246
|
+
"#@type/#{subtype} 'IANA,#{refs}"
|
247
|
+
end.compact
|
248
|
+
|
249
|
+
@mime_types
|
250
|
+
end
|
251
|
+
|
252
|
+
def save_text
|
253
|
+
File.open("#@name.txt", "wb") { |w| w.write @mime_types.join("\n") }
|
115
254
|
end
|
116
255
|
end
|
117
|
-
end
|
118
|
-
task $tardist => [ :test ]
|
119
|
-
|
120
|
-
desc "Build the RDoc documentation for #$name."
|
121
|
-
task :docs do
|
122
|
-
require 'rdoc/rdoc'
|
123
|
-
rdoc_options = %W(--title #$name --main README --line-numbers)
|
124
|
-
files = FileList[*%w(README LICENCE ChangeLog bin/**/*.rb lib/**/*.rb)]
|
125
|
-
rdoc_options += files.to_a
|
126
|
-
RDoc::RDoc.new.document(rdoc_options)
|
127
|
-
end
|
128
256
|
|
129
|
-
|
130
|
-
|
131
|
-
raise "RUBYFORGE_PASSWORD environment variable not set!" unless ENV['RUBYFORGE_PASSWORD']
|
132
|
-
end
|
257
|
+
puts "Downloading index of MIME types from #{IANAParser::INDEX}."
|
258
|
+
IANAParser.load_index
|
133
259
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
260
|
+
require 'fileutils'
|
261
|
+
FileUtils.mkdir_p destination
|
262
|
+
Dir.chdir destination do
|
263
|
+
IANAParser.types.values.sort.each do |parser|
|
264
|
+
next if parser.name == "example" or parser.name == "mime"
|
265
|
+
puts "Downloading #{parser.name} from #{parser.url}"
|
266
|
+
parser.download
|
138
267
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
Rake::XForge::Release.new($project) do |release|
|
143
|
-
release.user_name = ENV['RUBYFORGE_USER']
|
144
|
-
release.password = ENV['RUBYFORGE_PASSWORD']
|
145
|
-
release.files = release_files.to_a
|
146
|
-
release.release_name = "#$name #$version"
|
147
|
-
release.package_name = "mime-types"
|
148
|
-
|
149
|
-
notes = []
|
150
|
-
File.open("README") do |file|
|
151
|
-
file.each do |line|
|
152
|
-
line.chomp!
|
153
|
-
line.gsub!(/^#.*$/, '') and next
|
154
|
-
notes << line
|
268
|
+
if :html == save_type || :both == save_type
|
269
|
+
puts "Saving #{parser.name}.html"
|
270
|
+
parser.save_html
|
155
271
|
end
|
156
|
-
end
|
157
|
-
release.release_notes = notes.join("\n")
|
158
272
|
|
159
|
-
|
160
|
-
|
161
|
-
current = true
|
273
|
+
puts "Parsing #{parser.name} HTML"
|
274
|
+
parser.parse
|
162
275
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
break if line.empty? and not current
|
167
|
-
changes << line
|
276
|
+
if :text == save_type || :both == save_type
|
277
|
+
puts "Saving #{parser.name}.txt"
|
278
|
+
parser.save_text
|
168
279
|
end
|
169
280
|
end
|
170
|
-
release.release_changes = changes.join("\n")
|
171
281
|
end
|
172
282
|
end
|
173
283
|
|
174
|
-
desc "
|
175
|
-
task :
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
file.each do |line|
|
185
|
-
line.chomp!
|
186
|
-
break if line =~ /^=/
|
187
|
-
details << line
|
188
|
-
end
|
189
|
-
end
|
190
|
-
news.details = details.join("\n")
|
191
|
-
end
|
284
|
+
desc "Shows known MIME type sources."
|
285
|
+
task :mime_type_sources do
|
286
|
+
puts <<-EOS
|
287
|
+
http://www.ltsw.se/knbase/internet/mime.htp
|
288
|
+
http://www.webmaster-toolkit.com/mime-types.shtml
|
289
|
+
http://plugindoc.mozdev.org/winmime.php
|
290
|
+
http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html
|
291
|
+
http://www.feedforall.com/mime-types.htm
|
292
|
+
http://www.iana.org/assignments/media-types/
|
293
|
+
EOS
|
192
294
|
end
|
193
295
|
|
194
|
-
desc "
|
195
|
-
task :
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
296
|
+
desc "Validate the RubyGem spec for GitHub."
|
297
|
+
task :github_validate_spec do |t|
|
298
|
+
require 'yaml'
|
299
|
+
|
300
|
+
require 'rubygems/specification'
|
301
|
+
data = File.read("#{PKG_NAME}.gemspec")
|
302
|
+
spec = nil
|
303
|
+
|
304
|
+
if data !~ %r{!ruby/object:Gem::Specification}
|
305
|
+
code = "$SAFE = 3\n#{data}"
|
306
|
+
p code.split($/)[44]
|
307
|
+
Thread.new { spec = eval("$SAFE = 3\n#{data}") }.join
|
308
|
+
else
|
309
|
+
spec = YAML.load(data)
|
200
310
|
end
|
201
|
-
end
|
202
311
|
|
203
|
-
|
204
|
-
task :release => [ :verify_rubyforge, :verify_gmail, :release_files,
|
205
|
-
:publish_news, :email_announcement, :docs ]
|
312
|
+
spec.validate
|
206
313
|
|
207
|
-
|
208
|
-
|
314
|
+
puts spec
|
315
|
+
puts "OK"
|
316
|
+
end
|