Jeremy Hinegardner
6/20/2007 9:28:00 PM
On Thu, Jun 21, 2007 at 04:40:34AM +0900, Tim Pease wrote:
> On 6/20/07, 12 34 <rubyforum@web.knobby.ws> wrote:
> >I'd like to write something like
> >
> >PhotoEndings = %w[JPG,MRW,JPE]
> >MovieEndings = %w[AVI]
> >case ext # determined from the photo file name
> >when PhotoEndings
> ><do something whenever ext is the same as any of the photo endings. >
> >when MovieEndings
> ><do something else>
> >else
> >end
> >
> >I don't have to use case, any conditional will do.
> >
> >Thanks. I hope I have explained this. I have no idea what to search for.
> >I did try some, but I'm a newbie and don't understand the more advanced
> >syntax.
> >
>
> PhotoEndings = %w(JPG MRW JPE)
> MovieEndings = %w(AVI)
>
> case ext.upcase
> when *PhotoEndings
> puts "I'm a photo!"
> when *MovieEndings
> puts "I'm a movie!"
> else
> puts "I'm unknown '#{ext}'"
> end
>
Or take a completely different approach to the issue, use the mime/types
gem.
require 'rubygems'
require 'mime/types'
# add in a non-standard mime type for MRW files
mrw_mime_type = MIME::Type.from_array(['image/x-raw', %w[ mrw ]])
MIME::Types.add(mrw_mime_type)
test_files = %w[ jpeg_file.jpg jpeg_file.jpe mrw_file.mrw avi_file.avi mov_file.mov jkl_file.jkl ]
test_files.each do |t|
mime_types_for_t = MIME::Types.of(t)
if mime_types_for_t.size > 0 then
case mime_types_for_t.first.raw_media_type
when "image"
puts "#{t} is an image!"
when "video"
puts "#{t} is a video!"
else
puts "#{t} is a #{mt.raw_media_type}"
end
else
puts "No mime types found for #{t}"
end
end
output:
% ruby mrw-example.rb
jpeg_file.jpg is an image!
jpeg_file.jpe is an image!
mrw_file.mrw is an image!
avi_file.avi is a video!
mov_file.mov is a video!
No mime types found for jkl_file.jkl
enjoy,
-jeremy
--
========================================================================
Jeremy Hinegardner jeremy@hinegardner.org