PATH:
opt
/
alt
/
ruby30
/
share
/
gems
/
gems
/
rack-3.0.8
/
lib
/
rack
module Rack # Rack::Headers is a Hash subclass that downcases all keys. It's designed # to be used by rack applications that don't implement the Rack 3 SPEC # (by using non-lowercase response header keys), automatically handling # the downcasing of keys. class Headers < Hash def self.[](*items) if items.length % 2 != 0 if items.length == 1 && items.first.is_a?(Hash) new.merge!(items.first) else raise ArgumentError, "odd number of arguments for Rack::Headers" end else hash = new loop do break if items.length == 0 key = items.shift value = items.shift hash[key] = value end hash end end def [](key) super(downcase_key(key)) end def []=(key, value) super(key.downcase.freeze, value) end alias store []= def assoc(key) super(downcase_key(key)) end def compare_by_identity raise TypeError, "Rack::Headers cannot compare by identity, use regular Hash" end def delete(key) super(downcase_key(key)) end def dig(key, *a) super(downcase_key(key), *a) end def fetch(key, *default, &block) key = downcase_key(key) super end def fetch_values(*a) super(*a.map!{|key| downcase_key(key)}) end def has_key?(key) super(downcase_key(key)) end alias include? has_key? alias key? has_key? alias member? has_key? def invert hash = self.class.new each{|key, value| hash[value] = key} hash end def merge(hash, &block) dup.merge!(hash, &block) end def reject(&block) hash = dup hash.reject!(&block) hash end def replace(hash) clear update(hash) end def select(&block) hash = dup hash.select!(&block) hash end def to_proc lambda{|x| self[x]} end def transform_values(&block) dup.transform_values!(&block) end def update(hash, &block) hash.each do |key, value| self[key] = if block_given? && include?(key) block.call(key, self[key], value) else value end end self end alias merge! update def values_at(*keys) keys.map{|key| self[key]} end # :nocov: if RUBY_VERSION >= '2.5' # :nocov: def slice(*a) h = self.class.new a.each{|k| h[k] = self[k] if has_key?(k)} h end def transform_keys(&block) dup.transform_keys!(&block) end def transform_keys! hash = self.class.new each do |k, v| hash[yield k] = v end replace(hash) end end # :nocov: if RUBY_VERSION >= '3.0' # :nocov: def except(*a) super(*a.map!{|key| downcase_key(key)}) end end private def downcase_key(key) key.is_a?(String) ? key.downcase : key end end end
[+]
auth
[-] common_logger.rb
[edit]
[-] rewindable_input.rb
[edit]
[-] deflater.rb
[edit]
[-] tempfile_reaper.rb
[edit]
[-] directory.rb
[edit]
[-] utils.rb
[edit]
[+]
multipart
[-] builder.rb
[edit]
[-] response.rb
[edit]
[-] conditional_get.rb
[edit]
[-] version.rb
[edit]
[-] request.rb
[edit]
[-] show_status.rb
[edit]
[-] mock_request.rb
[edit]
[-] method_override.rb
[edit]
[-] head.rb
[edit]
[-] logger.rb
[edit]
[-] static.rb
[edit]
[-] mock.rb
[edit]
[-] chunked.rb
[edit]
[-] runtime.rb
[edit]
[-] urlmap.rb
[edit]
[-] null_logger.rb
[edit]
[-] files.rb
[edit]
[-] query_parser.rb
[edit]
[-] mock_response.rb
[edit]
[+]
..
[-] show_exceptions.rb
[edit]
[-] mime.rb
[edit]
[-] config.rb
[edit]
[-] constants.rb
[edit]
[-] events.rb
[edit]
[-] lint.rb
[edit]
[-] content_type.rb
[edit]
[-] reloader.rb
[edit]
[-] recursive.rb
[edit]
[-] multipart.rb
[edit]
[-] body_proxy.rb
[edit]
[-] sendfile.rb
[edit]
[-] etag.rb
[edit]
[-] headers.rb
[edit]
[-] cascade.rb
[edit]
[-] file.rb
[edit]
[-] lock.rb
[edit]
[-] media_type.rb
[edit]
[-] content_length.rb
[edit]