Class: FilterRename::FilenameFactory
- Inherits:
-
Object
- Object
- FilterRename::FilenameFactory
- Defined in:
- lib/filter_rename/filename_factory.rb
Overview
Factory class that returns the related file handler depending from its file type.
Class Method Summary collapse
Class Method Details
.create(fname, cfg) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/filter_rename/filename_factory.rb', line 15 def self.create(fname, cfg) return Filename.new(fname, cfg) if File.directory?(fname) || !cfg.mimemagic magic = MimeMagic.by_magic(File.open(fname)) mediatype, type, subtype = magic.nil? ? %w[unknown unknown unknown] : [magic.mediatype, magic.type, magic.subtype] if (File.read(fname, 3) == "ID3") && (mediatype == "audio") require "filter_rename/filetype/mp3_filename" res = Mp3Filename.new(fname, cfg) elsif ((mediatype == "audio") && (subtype == "mp4")) || (%w[flac ogg].include? subtype) require "filter_rename/filetype/audio_filename" res = AudioFilename.new(fname, cfg) elsif (mediatype == "image") && (!["vnd.djvu+multipage"].include? type.split("/")[1]) # supported types: jpeg, png require "filter_rename/filetype/image_filename" res = ImageFilename.new(fname, cfg) elsif type == "application/pdf" require "filter_rename/filetype/pdf_filename" res = PdfFilename.new(fname, cfg) else res = Filename.new(fname, cfg) end res end |