A stumble toward a 1.15 release to resync with the Perl version and the IANA lists.

This commit is contained in:
Austin Ziegler 2005-07-08 11:59:37 +00:00
Родитель d2fa96f8b6
Коммит 3161aa3ec8
14 изменённых файлов: 1731 добавлений и 376 удалений

Просмотреть файл

@ -1,8 +1,13 @@
Revision history for Ruby extension MIME::Types.
= MIME::Types Change Log
Unless explicitly stated differently are all changes produced by Austin
Ziegler <mime-types@halostatue.ca>.
== MIME::Types 1.15
* Re-synchronized the MIME type list with the sources, focusing primarily on
the IANA list.
* Re-synchronized with the Perl implementation.
== MIME::Types 1.13.1
* Fixed a problem with the installer running tests. This now works.
* Improved the implementation of MIME::Type.signature?
@ -75,3 +80,13 @@ Ziegler <mime-types@halostatue.ca>.
== MIME::Types 1.003
* Initial release based on Perl MIME::Types 1.003.
#--
# MIME::Types for Ruby
# http://rubyforge.org/projects/mime-types/
# Copyright 2003 - 2005 Austin Ziegler.
# Licensed under a MIT-style licence.
#
# $Id$
#++
# vim: sts=2 sw=2 ts=4 et ai tw=77

Просмотреть файл

@ -1,6 +1,16 @@
Installing this package is as simple as:
% ruby install.rb
% ruby setup.rb
Alternatively, you can use the RubyGem version of MIME::Types available as
mime-types-1.13.1.gem from the usual sources.
mime-types-1.15.gem from the usual sources.
#--
# MIME::Types for Ruby
# http://rubyforge.org/projects/mime-types/
# Copyright 2003 - 2005 Austin Ziegler.
# Licensed under a MIT-style licence.
#
# $Id$
#++
# vim: sts=2 sw=2 ts=4 et ai tw=77

128
trunk/mime-types/Rakefile Normal file
Просмотреть файл

@ -0,0 +1,128 @@
#! /usr/bin/env rake
#--
# MIME::Types for Ruby
# http://rubyforge.org/projects/mime-types/
# Copyright 2003 - 2005 Austin Ziegler.
# Licensed under a MIT-style licence.
#
# $Id$
#++
$LOAD_PATH.unshift('lib')
require 'rubygems'
require 'rake/gempackagetask'
require 'mime/types'
require 'archive/tar/minitar'
require 'zlib'
DISTDIR = "mime-types-#{MIME::Types::MIME_TYPES_VERSION}"
TARDIST = "../#{DISTDIR}.tar.gz"
DATE_RE = %r<(\d{4})[./-]?(\d{2})[./-]?(\d{2})(?:[\sT]?(\d{2})[:.]?(\d{2})[:.]?(\d{2})?)?>
if ENV['RELEASE_DATE']
year, month, day, hour, minute, second = DATE_RE.match(ENV['RELEASE_DATE']).captures
year ||= 0
month ||= 0
day ||= 0
hour ||= 0
minute ||= 0
second ||= 0
ReleaseDate = Time.mktime(year, month, day, hour, minute, second)
else
ReleaseDate = nil
end
task :test do |t|
require 'test/unit/testsuite'
require 'test/unit/ui/console/testrunner'
runner = Test::Unit::UI::Console::TestRunner
$LOAD_PATH.unshift('tests')
$stderr.puts "Checking for test cases:" if t.verbose
Dir['tests/tc_*.rb'].each do |testcase|
$stderr.puts "\t#{testcase}" if t.verbose
load testcase
end
suite = Test::Unit::TestSuite.new("MIME::Types")
ObjectSpace.each_object(Class) do |testcase|
suite << testcase.suite if testcase < Test::Unit::TestCase
end
runner.run(suite)
end
spec = eval(File.read("mime-types.gemspec"))
spec.version = MIME::Types::MIME_TYPES_VERSION
desc "Build the RubyGem for MIME::Types"
task :gem => [ :test ]
Rake::GemPackageTask.new(spec) do |g|
g.need_tar = false
g.need_zip = false
g.package_dir = ".."
end
desc "Build the MIME::Types manual.pdf"
task :manual do
PDF::TechBook.run %w(-z)
end
desc "Build a MIME::Types .tar.gz distribution."
task :tar => [ TARDIST ]
file TARDIST => [ :test ] do |t|
current = File.basename(Dir.pwd)
Dir.chdir("..") do
begin
files = %W(bin/**/* lib/**/* demo/**/* images/**/* ChangeLog README
LICENCE setup.rb pre-setup.rb metaconfig manual.pwd)
files = FileList[files.map { |file| File.join(current, file) }].to_a
files.map! do |dd|
ddnew = dd.gsub(/^#{current}/, DISTDIR)
mtime = ReleaseDate || File.stat(dd).mtime
if File.directory?(dd)
{ :name => ddnew, :mode => 0755, :dir => true, :mtime => mtime }
else
if dd =~ %r{bin/}
mode = 0755
else
mode = 0644
end
data = File.open(dd, "rb") { |ff| ff.read }
{ :name => ddnew, :mode => mode, :data => data, :size => data.size,
:mtime => mtime }
end
end
ff = File.open(t.name.gsub(%r{^\.\./}o, ''), "wb")
gz = Zlib::GzipWriter.new(ff)
tw = Archive::Tar::Minitar::Writer.new(gz)
files.each do |entry|
if entry[:dir]
tw.mkdir(entry[:name], entry)
else
tw.add_file_simple(entry[:name], entry) { |os| os.write(entry[:data]) }
end
end
ensure
tw.close if tw
gz.close if gz
end
end
end
task TARDIST => [ :test ]
desc "Build the RDoc documentation for MIME::Types"
task :docs do
require 'rdoc/rdoc'
rdoc_options = %w(--title MIME::Types --main README --line-numbers)
files = FileList[*%w(README LICENCE ChangeLog bin/**/*.rb lib/**/*.rb demo/**/*.rb)]
rdoc_options += files.to_a
RDoc::RDoc.new.document(rdoc_options)
end
desc "Build everything."
task :default => [ :tar, :gem ]

Просмотреть файл

@ -13,3 +13,13 @@ Based on prior work copyright
This package is licensed under Ruby's licence, the Perl Artistic licence, or
the GPL version 2 or later.
#--
# MIME::Types for Ruby
# http://rubyforge.org/projects/mime-types/
# Copyright 2003 - 2005 Austin Ziegler.
# Licensed under a MIT-style licence.
#
# $Id$
#++
# vim: sts=2 sw=2 ts=4 et ai tw=77

Просмотреть файл

@ -1,264 +0,0 @@
#! /usr/bin/env ruby
#--
# Copyright 2004 Austin Ziegler <ruby-install@halostatue.ca>
# Install utility. Based on the original installation script for rdoc by the
# Pragmatic Programmers.
#
# This program is free software. It may be redistributed and/or modified under
# the terms of the GPL version 2 (or later) or the Ruby licence.
#
# Usage
# -----
# In most cases, if you have a typical project layout, you will need to do
# absolutely nothing to make this work for you. This layout is:
#
# bin/ # executable files -- "commands"
# lib/ # the source of the library
# tests/ # unit tests
#
# The default behaviour:
# 1) Run all unit test files (ending in .rb) found in all directories under
# tests/.
# 2) Build Rdoc documentation from all files in bin/ (excluding .bat and .cmd),
# all .rb files in lib/, ./README, ./ChangeLog, and ./Install.
# 3) Build ri documentation from all files in bin/ (excluding .bat and .cmd),
# and all .rb files in lib/. This is disabled by default on Win32.
# 4) Install commands from bin/ into the Ruby bin directory. On Windows, if a
# if a corresponding batch file (.bat or .cmd) exists in the bin directory,
# it will be copied over as well. Otherwise, a batch file (always .bat) will
# be created to run the specified command.
# 5) Install all library files ending in .rb from lib/ into Ruby's
# site_lib/version directory.
#
# $Id$
#++
require 'rbconfig'
require 'find'
require 'fileutils'
require 'rdoc/rdoc'
require 'optparse'
require 'ostruct'
InstallOptions = OpenStruct.new
def glob(list)
g = list.map { |i| Dir.glob(i) }
g.flatten!
g.compact!
g.reject! { |e| e =~ /CVS/ }
g
end
# Set these values to what you want installed.
bins = glob(%w{bin/**/*}).reject { |e| e =~ /\.(bat|cmd)$/ }
rdoc = glob(%w{bin/**/* lib/**/*.rb README ChangeLog Install}).reject { |e| e=~ /\.(bat|cmd)$/ }
ri = glob(%w(bin/**/*.rb lib/**/*.rb)).reject { |e| e=~ /\.(bat|cmd)$/ }
libs = glob(%w{lib/**/*.rb})
tests = glob(%w{tests/**/*.rb})
def do_bins(bins, target, strip = 'bin/')
bins.each do |bf|
obf = bf.gsub(/#{strip}/, '')
install_binfile(bf, obf, target)
end
end
def do_libs(libs, strip = 'lib/')
libs.each do |lf|
olf = File.join(InstallOptions.site_dir, lf.gsub(/#{strip}/, ''))
op = File.dirname(olf)
File.makedirs(op, true)
File.chmod(0755, op)
File.install(lf, olf, 0755, true)
end
end
##
# Prepare the file installation.
#
def prepare_installation
InstallOptions.rdoc = true
if RUBY_PLATFORM == "i386-mswin32"
InstallOptions.ri = false
else
InstallOptions.ri = true
end
InstallOptions.tests = true
ARGV.options do |opts|
opts.banner = "Usage: #{File.basename($0)} [options]"
opts.separator ""
opts.on('--[no-]rdoc', 'Prevents the creation of RDoc output.', 'Default on.') do |onrdoc|
InstallOptions.rdoc = onrdoc
end
opts.on('--[no-]ri', 'Prevents the creation of RI output.', 'Default off on mswin32.') do |onri|
InstallOptions.ri = onri
end
opts.on('--[no-]tests', 'Prevents the execution of unit tests.', 'Default on.') do |ontest|
InstallOptions.tests = ontest
end
opts.on('--quick', 'Performs a quick installation. Only the', 'installation is done.') do |quick|
InstallOptions.rdoc = false
InstallOptions.ri = false
InstallOptions.tests = false
end
opts.on('--full', 'Performs a full installation. All', 'optional installation steps are run.') do |full|
InstallOptions.rdoc = true
InstallOptions.ri = true
InstallOptions.tests = true
end
opts.separator("")
opts.on_tail('--help', "Shows this help text.") do
$stderr.puts opts
exit
end
opts.parse!
end
bds = [".", ENV['TMP'], ENV['TEMP']]
version = [Config::CONFIG["MAJOR"], Config::CONFIG["MINOR"]].join(".")
ld = File.join(Config::CONFIG["libdir"], "ruby", version)
sd = Config::CONFIG["sitelibdir"]
if sd.nil?
sd = $:.find { |x| x =~ /site_ruby/ }
if sd.nil?
sd = File.join(ld, "site_ruby")
elsif sd !~ Regexp.quote(version)
sd = File.join(sd, version)
end
end
if (destdir = ENV['DESTDIR'])
bd = "#{destdir}#{Config::CONFIG['bindir']}"
sd = "#{destdir}#{sd}"
bds << bd
FileUtils.makedirs(bd)
FileUtils.makedirs(sd)
else
bds << Config::CONFIG['bindir']
end
InstallOptions.bin_dirs = bds.compact
InstallOptions.site_dir = sd
InstallOptions.bin_dir = bd
InstallOptions.lib_dir = ld
end
##
# Build the rdoc documentation. Also, try to build the RI documentation.
#
def build_rdoc(files)
r = RDoc::RDoc.new
r.document(["--main", "README", "--title", "Diff::LCS -- A Diff Algorithm",
"--line-numbers"] + files)
rescue RDoc::RDocError => e
$stderr.puts e.message
rescue Exception => e
$stderr.puts "Couldn't build RDoc documentation\n#{e.message}"
end
def build_ri(files)
ri = RDoc::RDoc.new
ri.document(["--ri-site", "--merge"] + files)
rescue RDoc::RDocError => e
$stderr.puts e.message
rescue Exception => e
$stderr.puts "Couldn't build Ri documentation\n#{e.message}"
end
def run_tests(test_list)
require 'test/unit/ui/console/testrunner'
$:.unshift "lib"
test_list.each do |test|
next if File.directory?(test)
require test
end
tests = []
ObjectSpace.each_object { |o| tests << o if o.kind_of?(Class) }
tests.delete_if { |o| !o.ancestors.include?(Test::Unit::TestCase) }
tests.delete_if { |o| o == Test::Unit::TestCase }
tests.each { |test| Test::Unit::UI::Console::TestRunner.run(test) }
$:.shift
end
##
# Install file(s) from ./bin to Config::CONFIG['bindir']. Patch it on the way
# to insert a #! line; on a Unix install, the command is named as expected
# (e.g., bin/rdoc becomes rdoc); the shebang line handles running it. Under
# windows, we add an '.rb' extension and let file associations do their stuff.
def install_binfile(from, op_file, target)
tmp_dir = nil
InstallOptions.bin_dirs.each do |t|
if File.directory?(t) and File.writable?(t)
tmp_dir = t
break
end
end
fail "Cannot find a temporary directory" unless tmp_dir
tmp_file = File.join(tmp_dir, '_tmp')
ruby = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
File.open(from) do |ip|
File.open(tmp_file, "w") do |op|
ruby = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
op.puts "#!#{ruby}"
op.write ip.read
end
end
if Config::CONFIG["target_os"] =~ /win/io
installed_wrapper = false
if File.exists?("#{from}.bat")
FileUtils.install("#{from}.bat", File.join(target, "#{op_file}.bat"), :mode => 0755, :verbose => true)
installed_wrapper = true
end
if File.exists?("#{from}.cmd")
FileUtils.install("#{from}.cmd", File.join(target, "#{op_file}.cmd"), :mode => 0755, :verbose => true)
installed_wrapper = true
end
if not installed_wrapper
tmp_file2 = File.join(tmp_dir, '_tmp_wrapper')
cwn = File.join(Config::CONFIG['bindir'], op_file)
cwv = CMD_WRAPPER.gsub('<ruby>', ruby.gsub(%r{/}) { "\\" }).gsub!('<command>', cwn.gsub(%r{/}) { "\\" } )
File.open(tmp_file2, "wb") { |cw| cw.puts cwv }
FileUtils.install(tmp_file2, File.join(target, "#{op_file}.bat"), :mode => 0755, :verbose => true)
File.unlink(tmp_file2)
installed_wrapper = true
end
end
FileUtils.install(tmp_file, File.join(target, op_file), :mode => 0755, :verbose => true)
File.unlink(tmp_file)
end
CMD_WRAPPER = <<-EOS
@echo off
if "%OS%"=="Windows_NT" goto WinNT
<ruby> -x "<command>" %1 %2 %3 %4 %5 %6 %7 %8 %9
goto done
:WinNT
<ruby> -x "<command>" %*
goto done
:done
EOS
prepare_installation
run_tests(tests) if InstallOptions.tests
build_rdoc(rdoc) if InstallOptions.rdoc
build_ri(ri) if InstallOptions.ri
do_bins(bins, Config::CONFIG['bindir'])
do_libs(libs)

Просмотреть файл

@ -10,10 +10,11 @@
#
# The ChangeLog contains all details on revisions.
#++
# TODO include ../../ChangeLog
module MIME #:nodoc:
# Reflects a MIME Content-Type which is in invalid format (e.g., it isn't
# in the form of type/subtype).
# The namespace for MIME appplications and tools.
module MIME
# Reflects a MIME Content-Type which is in invalid format (e.g., it
# isn't in the form of type/subtype).
class InvalidContentType < RuntimeError; end
# == Summary
@ -35,7 +36,7 @@ module MIME #:nodoc:
# puts MIME::Type.simplified('x-appl/x-zip') # => 'appl/zip'
#
class Type
VERSION = '1.13.1' #:nodoc:
VERSION = '1.15'
include Comparable
@ -44,7 +45,10 @@ module MIME #:nodoc:
ENCODING_RE = %r{^(?:base64|7bit|8bit|quoted\-printable)$}o #:nodoc:
PLATFORM_RE = %r|#{RUBY_PLATFORM}|o #:nodoc:
SIGNATURES = %w(application/pgp-keys application/pgp application/pgp-signature application/pkcs10 application/pkcs7-mime application/pkcs7-signature text/vcard) #:nodoc:
SIGNATURES = %w(application/pgp-keys application/pgp
application/pgp-signature application/pkcs10
application/pkcs7-mime application/pkcs7-signature
text/vcard) #:nodoc:
# Returns +true+ if the simplified type matches the current
def like?(other)
@ -56,8 +60,8 @@ module MIME #:nodoc:
end
# Compares the MIME::Type against the exact content type or the
# simplified type (the simplified type will be used if comparing against
# something that can be treated as a String with #to_s).
# simplified type (the simplified type will be used if comparing
# against something that can be treated as a String with #to_s).
def <=>(other) #:nodoc:
if other.respond_to?(:content_type)
@content_type <=> other.content_type
@ -99,23 +103,23 @@ module MIME #:nodoc:
# The MIME types main- and sub-label can both start with <tt>x-</tt>,
# which indicates that it is a non-registered name. Of course, after
# registration this flag can disappear, adds to the confusing
# proliferation of MIME types. The simplified string has the <tt>x-</tt>
# removed and are translated to lowercase.
# proliferation of MIME types. The simplified string has the
# <tt>x-</tt> removed and are translated to lowercase.
attr_reader :simplified
# The list of extensions which are known to be used for this MIME::Type.
# Non-array values will be coerced into an array with #to_a. Array
# values will be flattened and +nil+ values removed.
# The list of extensions which are known to be used for this
# MIME::Type. Non-array values will be coerced into an array with
# #to_a. Array values will be flattened and +nil+ values removed.
attr_accessor :extensions
def extensions=(ext) #:nodoc:
@extensions = ext.to_a.flatten.compact
end
# The encoding (7bit, 8bit, quoted-printable, or base64) required to
# transport the data of this content type safely across a network, which
# roughly corresponds to Content-Transfer-Encoding. A value of +nil+ or
# <tt>:default</tt> will reset the #encoding to the #default_encoding
# for the MIME::Type. Raises ArgumentError if the encoding provided is
# invalid.
# transport the data of this content type safely across a network,
# which roughly corresponds to Content-Transfer-Encoding. A value of
# +nil+ or <tt>:default</tt> will reset the #encoding to the
# #default_encoding for the MIME::Type. Raises ArgumentError if the
# encoding provided is invalid.
attr_accessor :encoding
def encoding=(enc) #:nodoc:
if enc.nil? or enc == :default
@ -144,11 +148,11 @@ module MIME #:nodoc:
end
class << self
# The MIME types main- and sub-label can both start with <tt>x-</tt>,
# which indicates that it is a non-registered name. Of course, after
# registration this flag can disappear, adds to the confusing
# proliferation of MIME types. The simplified string has the
# <tt>x-</tt> removed and are translated to lowercase.
# The MIME types main- and sub-label can both start with
# <tt>x-</tt>, which indicates that it is a non-registered name. Of
# course, after registration this flag can disappear, adds to the
# confusing proliferation of MIME types. The simplified string has
# the <tt>x-</tt> removed and are translated to lowercase.
def Type.simplified(content_type)
matchdata = CONTENT_TYPE_RE.match(content_type)
@ -248,8 +252,8 @@ module MIME #:nodoc:
# end
#
# === Changes
# In MIME::Types 1.07, the constructor accepted more argument types and
# called #instance_eval on the optional block provided. This is no
# In MIME::Types 1.07, the constructor accepted more argument types
# and called #instance_eval on the optional block provided. This is no
# longer the case as of 1.13. The full changes are noted below.
#
# 1. The constructor +yield+s +self+ instead of using #instance_eval and
@ -260,7 +264,7 @@ module MIME #:nodoc:
#
# # 1.07
# MIME::Type.new(plaintext)
# # 1.12
# # 1.13
# MIME::Type.from_mime_type(plaintext)
#
# 3. MIME::Type.new no longer accepts an Array argument. Use
@ -268,7 +272,7 @@ module MIME #:nodoc:
#
# # 1.07
# MIME::Type.new(["application/x-ruby", ["rb"], "8bit"])
# # 1.12
# # 1.13
# MIME::Type.from_array("application/x-ruby", ['rb'], '8bit')
# MIME::Type.from_array(["application/x-ruby", ['rb'], '8bit'])
#
@ -280,7 +284,7 @@ module MIME #:nodoc:
# 'Content-Transfer-Encoding' => '8bit',
# 'System' => 'linux',
# 'Extensions' => ['yaml', 'yml'])
# # 1.12
# # 1.13
# MIME::Type.from_hash('Content-Type' => 'text/x-yaml',
# 'Content-Transfer-Encoding' => '8bit',
# 'System' => 'linux',
@ -314,24 +318,24 @@ module MIME #:nodoc:
end
# MIME content-types which are not regestered by IANA nor defined in
# RFCs are required to start with <tt>x-</tt>. This counts as well for a
# new media type as well as a new sub-type of an existing media type. If
# either the media-type or the content-type begins with <tt>x-</tt>,
# this method will return +false+.
# RFCs are required to start with <tt>x-</tt>. This counts as well for
# a new media type as well as a new sub-type of an existing media
# type. If either the media-type or the content-type begins with
# <tt>x-</tt>, this method will return +false+.
def registered?
not (@raw_media_type =~ UNREGISTERED_RE) || (@raw_sub_type =~ UNREGISTERED_RE)
end
# MIME types can be specified to be sent across a network in particular
# formats. This method returns +true+ when the MIME type encoding is set
# to <tt>base64</tt>.
# MIME types can be specified to be sent across a network in
# particular formats. This method returns +true+ when the MIME type
# encoding is set to <tt>base64</tt>.
def binary?
@encoding == 'base64'
end
# MIME types can be specified to be sent across a network in particular
# formats. This method returns +false+ when the MIME type encoding is
# set to <tt>base64</tt>.
# MIME types can be specified to be sent across a network in
# particular formats. This method returns +false+ when the MIME type
# encoding is set to <tt>base64</tt>.
def ascii?
not binary?
end
@ -347,8 +351,8 @@ module MIME #:nodoc:
not @system.nil?
end
# Returns +true+ if the MIME::Type is specific to the current operating
# system as represented by RUBY_PLATFORM.
# Returns +true+ if the MIME::Type is specific to the current
# operating system as represented by RUBY_PLATFORM.
def platform?
system? and (RUBY_PLATFORM =~ @system)
end

Просмотреть файл

@ -68,9 +68,9 @@ module MIME #:nodoc:
#
module Types
# The released version of Ruby MIME::Types
VERSION = '1.13.1'
MIME_TYPES_VERSION = '1.15'
# The version of the data.
DATA_VERSION = '1.13'
DATA_VERSION = '1.15'
TYPE_VARIANTS = Hash.new { |h, k| h[k] = [] } #:nodoc:
EXTENSION_INDEX = Hash.new { |h, k| h[k] = [] } #:nodoc:

Просмотреть файл

Просмотреть файл

@ -1,6 +1,6 @@
Gem::Specification.new do |s|
s.name = %q{mime-types}
s.version = %q{1.13.1}
s.version = %q{1.15}
s.summary = %q{Manages a MIME Content-Type that will return the Content-Type for a given filename.}
s.platform = Gem::Platform::RUBY

Просмотреть файл

@ -0,0 +1,46 @@
require 'rdoc/rdoc'
##
# Build the rdoc documentation. Also, try to build the RI documentation.
#
def build_rdoc(options)
RDoc::RDoc.new.document(options)
rescue RDoc::RDocError => e
$stderr.puts e.message
rescue Exception => e
$stderr.puts "Couldn't build RDoc documentation\n#{e.message}"
end
def build_ri(files)
RDoc::RDoc.new(["--ri-site", "--merge"] + files)
rescue RDoc::RDocError => e
$stderr.puts e.message
rescue Exception => e
$stderr.puts "Couldn't build Ri documentation\n#{e.message}"
end
def run_tests(test_list)
return if test_list.empty?
require 'test/unit/ui/console/testrunner'
$:.unshift "lib"
test_list.each do |test|
next if File.directory?(test)
require test
end
tests = []
ObjectSpace.each_object { |o| tests << o if o.kind_of?(Class) }
tests.delete_if { |o| !o.ancestors.include?(Test::Unit::TestCase) }
tests.delete_if { |o| o == Test::Unit::TestCase }
tests.each { |test| Test::Unit::UI::Console::TestRunner.run(test) }
$:.shift
end
rdoc = %w(--main README --line-numbers
--title MIME::Types)
ri = %w(--ri-site --merge)
dox = %w(README ChangeLog lib)
build_rdoc rdoc + dox
build_ri ri + dox
run_tests Dir["tests/**/*"]

1366
trunk/mime-types/setup.rb Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,9 +1,18 @@
#! /usr/bin/env ruby
#--
# MIME::Types for Ruby
# http://rubyforge.org/projects/mime-types/
# Copyright 2003 - 2005 Austin Ziegler.
# Licensed under a MIT-style licence.
#
# $Id$
#++
$LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib") if __FILE__ == $0
require 'mime/types'
require 'mime/type'
require 'test/unit'
class TestMIME__Type < Test::Unit::TestCase #:nodoc:
class Test_MIME__Type < Test::Unit::TestCase #:nodoc:
def setup
@zip = MIME::Type.new('x-appl/x-zip') { |t| t.extensions = ['zip', 'zp'] }
end
@ -258,67 +267,3 @@ class TestMIME__Type < Test::Unit::TestCase #:nodoc:
assert_equal(MIME::Type.simplified('x-xyz/abc'), 'xyz/abc')
end
end
class TestMIME__Types < Test::Unit::TestCase #:nodoc:
def test_s_AREF # singleton method '[]'
text_plain = MIME::Type.new('text/plain') do |t|
t.encoding = '8bit'
t.extensions = ['asc', 'txt', 'c', 'cc', 'h', 'hh', 'cpp', 'hpp', 'dat', 'hlp']
end
text_plain_vms = MIME::Type.new('text/plain') do |t|
t.encoding = '8bit'
t.extensions = ['doc']
t.system = 'vms'
end
text_vnd_fly = MIME::Type.new('text/vnd.fly')
assert_equal(MIME::Types['text/plain'].sort,
[text_plain, text_plain_vms].sort)
assert_equal(MIME::Types[/bmp$/].sort,
[MIME::Type.from_array('image/x-bmp', ['bmp']),
MIME::Type.from_array('image/vnd.wap.wbmp', ['wbmp']),
MIME::Type.from_array('image/x-win-bmp')].sort)
assert_equal(MIME::Types[/bmp$/, { :complete => true }].sort,
[MIME::Type.from_array('image/x-bmp', ['bmp']),
MIME::Type.from_array('image/vnd.wap.wbmp', ['wbmp'])].sort)
assert_nothing_raised { MIME::Types['image/bmp'][0].system = RUBY_PLATFORM }
assert_equal(MIME::Types[/bmp$/, { :platform => true }],
[MIME::Type.from_array('image/x-bmp', ['bmp'])])
assert(MIME::Types['text/vnd.fly', { :complete => true }].empty?)
assert(!MIME::Types['text/plain', { :complete => true} ].empty?)
end
def test_s_add
assert_nothing_raised do
@eruby = MIME::Type.new("application/x-eruby") do |t|
t.extensions = "rhtml"
t.encoding = "8bit"
end
MIME::Types.add(@eruby)
end
assert_equal(MIME::Types['application/x-eruby'], [@eruby])
end
def test_s_type_for
assert_equal(MIME::Types.type_for('xml'), MIME::Types['text/xml'])
assert_equal(MIME::Types.type_for('gif'), MIME::Types['image/gif'])
assert_nothing_raised do
MIME::Types['image/gif'][0].system = RUBY_PLATFORM
end
assert_equal(MIME::Types.type_for('gif', true), MIME::Types['image/gif'])
assert(MIME::Types.type_for('zzz').empty?)
end
def test_s_of
assert_equal(MIME::Types.of('xml'), MIME::Types['text/xml'])
assert_equal(MIME::Types.of('gif'), MIME::Types['image/gif'])
assert_nothing_raised do
MIME::Types['image/gif'][0].system = RUBY_PLATFORM
end
assert_equal(MIME::Types.of('gif', true), MIME::Types['image/gif'])
assert(MIME::Types.of('zzz').empty?)
end
end

Просмотреть файл

@ -0,0 +1,77 @@
#! /usr/bin/env ruby
#--
# MIME::Types for Ruby
# http://rubyforge.org/projects/mime-types/
# Copyright 2003 - 2005 Austin Ziegler.
# Licensed under a MIT-style licence.
#
# $Id$
#++
$LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib") if __FILE__ == $0
require 'mime/types'
require 'test/unit'
class TestMIME__Types < Test::Unit::TestCase #:nodoc:
def test_s_AREF # singleton method '[]'
text_plain = MIME::Type.new('text/plain') do |t|
t.encoding = '8bit'
t.extensions = ['asc', 'txt', 'c', 'cc', 'h', 'hh', 'cpp', 'hpp', 'dat', 'hlp']
end
text_plain_vms = MIME::Type.new('text/plain') do |t|
t.encoding = '8bit'
t.extensions = ['doc']
t.system = 'vms'
end
text_vnd_fly = MIME::Type.new('text/vnd.fly')
assert_equal(MIME::Types['text/plain'].sort,
[text_plain, text_plain_vms].sort)
assert_equal([MIME::Type.from_array('image/x-bmp', ['bmp']),
MIME::Type.from_array('image/vnd.wap.wbmp',
['wbmp'])].sort, MIME::Types[/bmp$/].sort)
assert_equal([MIME::Type.from_array('image/x-bmp', ['bmp']),
MIME::Type.from_array('image/vnd.wap.wbmp',
['wbmp'])].sort,
MIME::Types[/bmp$/, { :complete => true }].sort)
assert_nothing_raised { MIME::Types['image/bmp'][0].system = RUBY_PLATFORM }
assert_equal([MIME::Type.from_array('image/x-bmp', ['bmp'])],
MIME::Types[/bmp$/, { :platform => true }])
assert(MIME::Types['text/vnd.fly', { :complete => true }].empty?)
assert(!MIME::Types['text/plain', { :complete => true} ].empty?)
end
def test_s_add
assert_nothing_raised do
@eruby = MIME::Type.new("application/x-eruby") do |t|
t.extensions = "rhtml"
t.encoding = "8bit"
end
MIME::Types.add(@eruby)
end
assert_equal(MIME::Types['application/x-eruby'], [@eruby])
end
def test_s_type_for
assert_equal(MIME::Types.type_for('xml'), MIME::Types['text/xml'])
assert_equal(MIME::Types.type_for('gif'), MIME::Types['image/gif'])
assert_nothing_raised do
MIME::Types['image/gif'][0].system = RUBY_PLATFORM
end
assert_equal(MIME::Types.type_for('gif', true), MIME::Types['image/gif'])
assert(MIME::Types.type_for('zzz').empty?)
end
def test_s_of
assert_equal(MIME::Types.of('xml'), MIME::Types['text/xml'])
assert_equal(MIME::Types.of('gif'), MIME::Types['image/gif'])
assert_nothing_raised do
MIME::Types['image/gif'][0].system = RUBY_PLATFORM
end
assert_equal(MIME::Types.of('gif', true), MIME::Types['image/gif'])
assert(MIME::Types.of('zzz').empty?)
end
end

Просмотреть файл

@ -0,0 +1,18 @@
#! /usr/bin/env ruby
#--
# MIME::Types for Ruby
# http://rubyforge.org/projects/mime-types/
# Copyright 2003 - 2005 Austin Ziegler.
# Licensed under a MIT-style licence.
#
# $Id$
#++
$LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib") if __FILE__ == $0
puts "Checking for test cases:"
Dir['tc_*.rb'].each do |testcase|
puts "\t#{testcase}"
require testcase
end
puts