Sha256: 0b8ea678deb5ad358cabacc89c1fd9493314e3ffb0d19a8408b79ad3b2fbfb4d

Contents?: true

Size: 800 Bytes

Versions: 5

Compression:

Stored size: 800 Bytes

Contents

module FileData
  # Operations common to all files
  class FileInfo
    class << self
      attr_reader :info_maps
    end

    @info_maps ||= {}

    %w[creation_date origin_date].each do |method_name|
      define_singleton_method(method_name) do |filename|
        File.open(filename, 'rb') do |stream|
          reader = reader_class(filename)
          raise "No metadata parser class found for the file #{filename}" if reader.nil?

          reader_class(filename).send(method_name, stream)
        end
      end
    end

    def self.reader_class(filename)
      info_maps[get_reader_key(filename)]
    end

    def self.can_handle?(filename)
      info_maps.key?(get_reader_key(filename))
    end

    def self.get_reader_key(filename)
      File.extname(filename).downcase
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
file_data-6.0.0 lib/file_data/file_types/file_info.rb
file_data-5.2.3 lib/file_data/file_types/file_info.rb
file_data-5.2.2 lib/file_data/file_types/file_info.rb
file_data-5.2.1 lib/file_data/file_types/file_info.rb
file_data-5.2.0 lib/file_data/file_types/file_info.rb