Skip to content
Permalink
Browse files

[ci skip] doc Http::Headers methods

  • Loading branch information
schneems committed May 9, 2014
1 parent a923375 commit aabbf07d003d78a685c0cdcb8e8f9e7fbb02361c
Showing with 17 additions and 1 deletion.
  1. +17 −1 actionpack/lib/action_dispatch/http/headers.rb
@@ -19,21 +19,29 @@ class Headers
include Enumerable
attr_reader :env

def initialize(env = {})
def initialize(env = {}) # :nodoc:
@env = env
end

# Returns the value for the given key mapped to @env.
def [](key)
@env[env_name(key)]
end

# Set the given value for the key mapped to @env.
def []=(key, value)
@env[env_name(key)] = value
end

def key?(key); @env.key? key; end
alias :include? :key?


# Returns the value for the given key mapped to @env.
# If the key can’t be found, there are several options:
# with no other arguments, it will raise an KeyError exception;
# If the optional code block is specified, then that will be run and its
# result returned.
def fetch(key, *args, &block)
@env.fetch env_name(key), *args, &block
end
@@ -42,19 +50,27 @@ def each(&block)
@env.each(&block)
end


# Returns a new Http::Headers instance containing the contents of
# <tt>headers_or_env</tt> and the original instance.
def merge(headers_or_env)
headers = Http::Headers.new(env.dup)
headers.merge!(headers_or_env)
headers
end

# Adds the contents of <tt>headers_or_env</tt> to original instance
# entries with duplicate keys are overwritten with the values from
# <tt>headers_or_env</tt>.
def merge!(headers_or_env)
headers_or_env.each do |key, value|
self[env_name(key)] = value
end
end

private
# Converts a HTTP header name to an environment variable name if it is
# not contained within the headers hash.
def env_name(key)
key = key.to_s
if key =~ HTTP_HEADER

0 comments on commit aabbf07

Please sign in to comment.
You can’t perform that action at this time.