Sha256: e2023152e6a6428cf4fbd93a744b562214ffdc084b21af28428c5fcd69a874fa

Contents?: true

Size: 1.53 KB

Versions: 17

Compression:

Stored size: 1.53 KB

Contents

require 'filemagic'

module FileMagic::Ext

  def self.included(base)
    base.class_eval {
      extend ClassMethods
      include InstanceMethods
    }
  end

  module ClassMethods

    def file_type(file, *flags)
      raise NotImplementedError, 'must be implemented by including class'
    end

    def file(file, *flags)
      file_type(file, *flags)
    end

    def mime_type(file, *flags)
      file_type(file, *flags.unshift(:mime))
    end

    alias_method :mime, :mime_type

    def content_type(file, *flags)
      mime_type(file, *flags << { simplified: true })
    end

  end

  module InstanceMethods

    def file_type(*flags)
      self.class.file_type(self, *flags)
    end

    alias_method :file, :file_type

    def mime_type(*flags)
      self.class.mime_type(self, *flags)
    end

    alias_method :mime, :mime_type

    def content_type(*flags)
      self.class.content_type(self, *flags)
    end

  end

end

class File

  include FileMagic::Ext

  def self.file_type(file, *flags)
    FileMagic.fm(*flags).file(file.respond_to?(:path) ? file.path : file)
  rescue FileMagic::FileMagicError
  end

end

class String

  include FileMagic::Ext

  def self.file_type(string, *flags)
    FileMagic.fm(*flags).buffer(string)
  rescue FileMagic::FileMagicError
  end

end

if $0 == __FILE__
  f = __FILE__
  p f

  p File.file_type(f)
  p File.mime_type(f)
  p File.content_type(f)

  f = File.new(f)
  p f

  p f.file_type
  p f.mime_type
  p f.content_type

  s = '#! /usr/bin/ruby'
  p s

  p s.file_type
  p s.mime_type
  p s.content_type
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
ruby-filemagic-0.7.3 lib/filemagic/ext.rb
ruby-filemagic-0.7.2-x86-mswin32-60 lib/filemagic/ext.rb
ruby-filemagic-0.7.2-x86-mingw32 lib/filemagic/ext.rb
ruby-filemagic-0.7.2 lib/filemagic/ext.rb
ruby-filemagic-0.7.1-x86-mingw32 lib/filemagic/ext.rb
ruby-filemagic-0.7.1-x86-mswin32-60 lib/filemagic/ext.rb
ruby-filemagic-0.7.1 lib/filemagic/ext.rb
ruby-filemagic-0.7.0-x86-mswin32-60 lib/filemagic/ext.rb
ruby-filemagic-0.7.0-x86-mingw32 lib/filemagic/ext.rb
ruby-filemagic-0.7.0 lib/filemagic/ext.rb
ruby-filemagic-0.6.3-x86-mswin32-60 lib/filemagic/ext.rb
ruby-filemagic-0.6.3-x86-mingw32 lib/filemagic/ext.rb
ruby-filemagic-0.6.3 lib/filemagic/ext.rb
ruby-filemagic-0.6.2-x86-mswin32-60 lib/filemagic/ext.rb
ruby-filemagic-0.6.2-x86-mingw32 lib/filemagic/ext.rb
ruby-filemagic-0.6.2 lib/filemagic/ext.rb
ruby-filemagic-0.6.1 lib/filemagic/ext.rb