class Mime::Type

Experimental RBS support (using type sampling data from the type_fusion project).

# sig/action_dispatch/http/mime_type.rbs

class Mime::Type
  def lookup: (String string) -> untyped
  def ref: () -> untyped
  def register: (String string, Symbol symbol, ?Array[] mime_type_synonyms, ?Array[] extension_synonyms, ?false skip_lookup) -> Mime::Type
  def to_s: () -> untyped
  def to_sym: () -> untyped
end

end
end
end
format.xml { render xml: @post }
format.ics { render body: @post.to_ics, mime_type: Mime::Type.lookup(“text/calendar”) }
format.html
respond_to do |format|
@post = Post.find(params)
def show
class PostsController < ActionController::Base
Encapsulates the notion of a MIME type. Can be used at render time, for example, with:

def ==(mime_type)

def ==(mime_type)
  return false unless mime_type
  (@synonyms + [ self ]).any? do |synonym|
    synonym.to_s == mime_type.to_s || synonym.to_sym == mime_type.to_sym
  end
end

def ===(list)

def ===(list)
  if list.is_a?(Array)
    (@synonyms + [ self ]).any? { |synonym| list.include?(synonym) }
  else
    super
  end
end

def =~(mime_type)

def =~(mime_type)
  return false unless mime_type
  regexp = Regexp.new(Regexp.quote(mime_type.to_s))
  @synonyms.any? { |synonym| synonym.to_s =~ regexp } || @string =~ regexp
end

def all?; false; end

def all?; false; end

def eql?(other)

def eql?(other)
  super || (self.class == other.class &&
            @string    == other.string &&
            @synonyms  == other.synonyms &&
            @symbol    == other.symbol)
end

def html?

def html?
  (symbol == :html) || /html/.match?(@string)
end

def initialize(string, symbol = nil, synonyms = [])

def initialize(string, symbol = nil, synonyms = [])
  unless MIME_REGEXP.match?(string)
    raise InvalidMimeType, "#{string.inspect} is not a valid MIME type"
  end
  @symbol, @synonyms = symbol, synonyms
  @string = string
  @hash = [@string, @synonyms, @symbol].hash
end

def lookup(string)

Experimental RBS support (using type sampling data from the type_fusion project).

def lookup: (String string) -> untyped

This signature was generated using 1 sample from 1 application.

def lookup(string)
  LOOKUP[string] || Type.new(string)
end

def lookup_by_extension(extension)

def lookup_by_extension(extension)
  EXTENSION_LOOKUP[extension.to_s]
end

def match?(mime_type)

def match?(mime_type)
  return false unless mime_type
  regexp = Regexp.new(Regexp.quote(mime_type.to_s))
  @synonyms.any? { |synonym| synonym.to_s.match?(regexp) } || @string.match?(regexp)
end

def method_missing(method, *args)

def method_missing(method, *args)
  if method.end_with?("?")
    method[0..-2].downcase.to_sym == to_sym
  else
    super
  end
end

def parse(accept_header)

def parse(accept_header)
  if !accept_header.include?(",")
    accept_header = accept_header.split(PARAMETER_SEPARATOR_REGEXP).first
    return [] unless accept_header
    parse_trailing_star(accept_header) || [Mime::Type.lookup(accept_header)].compact
  else
    list, index = [], 0
    accept_header.split(",").each do |header|
      params, q = header.split(PARAMETER_SEPARATOR_REGEXP)
      next unless params
      params.strip!
      next if params.empty?
      params = parse_trailing_star(params) || [params]
      params.each do |m|
        list << AcceptItem.new(index, m.to_s, q)
        index += 1
      end
    end
    AcceptList.sort! list
  end
end

def parse_data_with_trailing_star(type)

Mime[:xml], Mime[:yaml], Mime[:atom], Mime[:json], Mime[:rss], Mime[:url_encoded_form].
For an input of 'application', returns [Mime[:html], Mime[:js],

Mime[:html], Mime[:css], Mime[:csv], Mime[:js], Mime[:yaml], Mime[:text]
.
For an input of 'text', returns [Mime[:json], Mime[:xml], Mime[:ics],
def parse_data_with_trailing_star(type)
  Mime::SET.select { |m| m.match?(type) }
end

def parse_trailing_star(accept_header)

def parse_trailing_star(accept_header)
  parse_data_with_trailing_star($1) if accept_header =~ TRAILING_STAR_REGEXP
end

def ref

Experimental RBS support (using type sampling data from the type_fusion project).

def ref: () -> untyped

This signature was generated using 1 sample from 1 application.

def ref
  symbol || to_s
end

def register(string, symbol, mime_type_synonyms = [], extension_synonyms = [], skip_lookup = false)

Experimental RBS support (using type sampling data from the type_fusion project).

def register: (String string, Symbol symbol, ? mime_type_synonyms, ? extension_synonyms, ?false skip_lookup) -> Mime::Type

This signature was generated using 1 sample from 1 application.

def register(string, symbol, mime_type_synonyms = [], extension_synonyms = [], skip_lookup = false)
  new_mime = Type.new(string, symbol, mime_type_synonyms)
  SET << new_mime
  ([string] + mime_type_synonyms).each { |str| LOOKUP[str] = new_mime } unless skip_lookup
  ([symbol] + extension_synonyms).each { |ext| EXTENSION_LOOKUP[ext.to_s] = new_mime }
  @register_callbacks.each do |callback|
    callback.call(new_mime)
  end
  new_mime
end

def register_alias(string, symbol, extension_synonyms = [])

rendering different HTML versions depending on the user agent, like an iPhone.
Registers an alias that's not used on MIME type lookup, but can be referenced directly. Especially useful for
def register_alias(string, symbol, extension_synonyms = [])
  register(string, symbol, [], extension_synonyms, true)
end

def register_callback(&block)

def register_callback(&block)
  @register_callbacks << block
end

def respond_to_missing?(method, include_private = false)

def respond_to_missing?(method, include_private = false)
  method.end_with?("?") || super
end

def to_a; end

def to_a; end

def to_ary; end

def to_ary; end

def to_s

Experimental RBS support (using type sampling data from the type_fusion project).

def to_s: () -> untyped

This signature was generated using 2 samples from 1 application.

def to_s
  @string
end

def to_str

def to_str
  to_s
end

def to_sym

Experimental RBS support (using type sampling data from the type_fusion project).

def to_sym: () -> untyped

This signature was generated using 1 sample from 1 application.

def to_sym
  @symbol
end

def unregister(symbol)

Mime::Type.unregister(:mobile)

To unregister a MIME type:

This method is opposite of register method.
def unregister(symbol)
  symbol = symbol.downcase
  if mime = Mime[symbol]
    SET.delete_if { |v| v.eql?(mime) }
    LOOKUP.delete_if { |_, v| v.eql?(mime) }
    EXTENSION_LOOKUP.delete_if { |_, v| v.eql?(mime) }
  end
end