Sha256: e1e73f77962aceeaca1ef7df270b0a7b15f86258ffa59e9680455673904d8ed3

Contents?: true

Size: 1.6 KB

Versions: 75

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

require 'mime/type'

# A version of MIME::Type that works hand-in-hand with a MIME::Types::Columnar
# container to load data by columns.
#
# When a field is has not yet been loaded, that data will be loaded for all
# types in the container before forwarding the message to MIME::Type.
#
# More information can be found in MIME::Types::Columnar.
#
# MIME::Type::Columnar is *not* intended to be created except by
# MIME::Types::Columnar containers.
class MIME::Type::Columnar < MIME::Type
  def initialize(container, content_type, extensions) # :nodoc:
    @container = container
    self.content_type = content_type
    self.extensions = extensions
  end

  def self.column(*methods, file: nil) # :nodoc:
    file ||= methods.first

    file_method = :"load_#{file}"
    methods.each do |m|
      define_method m do |*args|
        @container.send(file_method)
        super(*args)
      end
    end
  end

  column :friendly
  column :encoding, :encoding=
  column :docs, :docs=
  column :preferred_extension, :preferred_extension=
  column :obsolete, :obsolete=, :obsolete?, :registered, :registered=,
         :registered?, :signature, :signature=, :signature?, file: 'flags'
  column :xrefs, :xrefs=, :xref_urls
  column :use_instead, :use_instead=

  def encode_with(coder) # :nodoc:
    @container.send(:load_friendly)
    @container.send(:load_encoding)
    @container.send(:load_docs)
    @container.send(:load_flags)
    @container.send(:load_use_instead)
    @container.send(:load_xrefs)
    @container.send(:load_preferred_extension)
    super
  end

  class << self
    undef column
  end
end

Version data entries

75 entries across 41 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/type/columnar.rb
tdiary-5.2.0 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/type/columnar.rb
vagrant-unbundled-2.2.18.0 vendor/bundle/ruby/3.0.0/gems/mime-types-3.3.1/lib/mime/type/columnar.rb
tdiary-5.1.7 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/type/columnar.rb
tdiary-5.1.7 vendor/bundle/ruby/3.0.0/gems/mime-types-3.3.1/lib/mime/type/columnar.rb
tdiary-5.1.6 vendor/bundle/ruby/3.0.0/gems/mime-types-3.3.1/lib/mime/type/columnar.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/type/columnar.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/type/columnar.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/type/columnar.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/type/columnar.rb
vagrant-unbundled-2.2.16.0 vendor/bundle/ruby/3.0.0/gems/mime-types-3.3.1/lib/mime/type/columnar.rb
vagrant-unbundled-2.2.16.0 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/type/columnar.rb
kinetic_sdk-5.0.19 gems/mime-types-3.3.1/lib/mime/type/columnar.rb
tdiary-5.1.5 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/type/columnar.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/type/columnar.rb
tdiary-5.1.5 vendor/bundle/ruby/3.0.0/gems/mime-types-3.3.1/lib/mime/type/columnar.rb
vagrant-unbundled-2.2.14.0 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/type/columnar.rb
tdiary-5.1.4 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/type/columnar.rb
paynow_sdk-1.1.0 vendor/bundle/ruby/2.7.0/gems/mime-types-3.3.1/lib/mime/type/columnar.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/type/columnar.rb