Sha256: 8dfa6c6acdb0aecf53f41c9987ba294e553046d9a04d58d116fcce3839375b4f

Contents?: true

Size: 1.89 KB

Versions: 83

Compression:

Stored size: 1.89 KB

Contents

# frozen_string_literal: true

class << MIME::Types
  include Enumerable

  ##
  def new(*) # :nodoc:
    super.tap do |types|
      __instances__.add types
    end
  end

  # MIME::Types#[] against the default MIME::Types registry.
  def [](type_id, complete: false, registered: false)
    __types__[type_id, complete: complete, registered: registered]
  end

  # MIME::Types#count against the default MIME::Types registry.
  def count
    __types__.count
  end

  # MIME::Types#each against the default MIME::Types registry.
  def each
    if block_given?
      __types__.each { |t| yield t }
    else
      enum_for(:each)
    end
  end

  # MIME::Types#type_for against the default MIME::Types registry.
  def type_for(filename)
    __types__.type_for(filename)
  end
  alias of type_for

  # MIME::Types#add against the default MIME::Types registry.
  def add(*types)
    __types__.add(*types)
  end

  private

  def lazy_load?
    return unless ENV.key?('RUBY_MIME_TYPES_LAZY_LOAD')

    MIME::Types.logger.warn <<-WARNING.chomp
Lazy loading ($RUBY_MIME_TYPES_LAZY_LOAD) is deprecated and will be removed.
    WARNING

    (lazy = ENV['RUBY_MIME_TYPES_LAZY_LOAD']) && (lazy != 'false')
  end

  def __types__
    (defined?(@__types__) and @__types__) or load_default_mime_types
  end

  unless private_method_defined?(:load_mode)
    def load_mode
      { columnar: true }
    end
  end

  def load_default_mime_types(mode = load_mode)
    if (@__types__ = MIME::Types::Cache.load)
      __instances__.add(@__types__)
    else
      @__types__ = MIME::Types::Loader.load(mode)
      MIME::Types::Cache.save(@__types__)
    end
    @__types__
  end

  def __instances__
    @__instances__ ||= Set.new
  end

  def reindex_extensions(type)
    __instances__.each do |instance|
      instance.send(:reindex_extensions!, type)
    end
    true
  end
end

##
class MIME::Types
  load_default_mime_types(load_mode) unless lazy_load?
end

Version data entries

83 entries across 47 versions & 8 rubygems

Version Path
vagrant-unbundled-2.2.19.0 vendor/bundle/ruby/3.0.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
tdiary-5.2.0 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
vagrant-unbundled-2.2.18.0 vendor/bundle/ruby/3.0.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
tdiary-5.1.7 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
tdiary-5.1.7 vendor/bundle/ruby/3.0.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/tdiary-5.1.5/vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
tdiary-5.1.6 vendor/bundle/ruby/3.0.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/tdiary-5.1.5/vendor/bundle/ruby/3.0.0/gems/tdiary-5.1.4/vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/tdiary-5.1.5/vendor/bundle/ruby/3.0.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
vagrant-unbundled-2.2.16.0 vendor/bundle/ruby/3.0.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
vagrant-unbundled-2.2.16.0 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
kinetic_sdk-5.0.19 gems/mime-types-3.3.1/lib/mime/types/registry.rb
tdiary-5.1.5 vendor/bundle/ruby/3.0.0/gems/tdiary-5.1.4/vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
tdiary-5.1.5 vendor/bundle/ruby/3.0.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
tdiary-5.1.5 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
vagrant-unbundled-2.2.14.0 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
tdiary-5.1.4 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
paynow_sdk-1.1.0 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb
paynow_sdk-1.1.0 vendor/bundle/ruby/2.7.0/gems/paynow_sdk-1.0.9/vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/types/registry.rb