diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2009-05-15 04:38:26 +0800 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2009-05-16 00:29:57 +0800 |
commit | 0bc566223c735d9efa3a1d0d925e8d7001760b85 (patch) | |
tree | 54473af2d948e32898dabd2dfd2121355a32be69 | |
parent | 0ab6b6c96dc43bec8a02d72ad5c6b944ad30df91 (diff) | |
download | rack-0bc566223c735d9efa3a1d0d925e8d7001760b85.tar.gz |
Speed up common header reads by avoiding downcase
Signed-off-by: Joshua Peek <josh@joshpeek.com>
-rw-r--r-- | lib/rack/utils.rb | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/rack/utils.rb b/lib/rack/utils.rb index 050d381c..2903273c 100644 --- a/lib/rack/utils.rb +++ b/lib/rack/utils.rb @@ -227,21 +227,23 @@ module Rack end def [](k) - super @names[k.downcase] + super(@names[k] ||= @names[k.downcase]) end def []=(k, v) delete k - @names[k.downcase] = k + @names[k] = @names[k.downcase] = k super k, v end def delete(k) - super @names.delete(k.downcase) + canonical = k.downcase + super @names.delete(canonical) + @names.delete_if { |name,| name.downcase == canonical } end def include?(k) - @names.has_key? k.downcase + @names.include?(k) || @names.include?(k.downcase) end alias_method :has_key?, :include? |