Skip to content

Commit

Permalink
Merge pull request #1405 from iguchi1124/support-ruby25-hash-slice
Browse files Browse the repository at this point in the history
Support ruby2.5 Hash#slice to Sinatra::IndifferentHash
  • Loading branch information
namusyaka authored Apr 28, 2018
2 parents a8b1a77 + 23afce5 commit 83a2a69
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
5 changes: 5 additions & 0 deletions lib/sinatra/indifferent_hash.rb
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,11 @@ def fetch_values(*keys)
super(*keys.map(&method(:convert_key)))
end if method_defined?(:fetch_values) # Added in Ruby 2.3

def slice(*keys)
keys.map!(&method(:convert_key))
self.class[super(*keys)]
end if method_defined?(:slice) # Added in Ruby 2.5

def values_at(*keys)
super(*keys.map(&method(:convert_key)))
end
Expand Down
12 changes: 12 additions & 0 deletions test/indifferent_hash_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,18 @@ def test_dig
assert_nil @hash.dig('nested', ?a, 0, :d)
end

def test_slice
skip_if_lacking :slice

assert_equal Sinatra::IndifferentHash[a: :a], @hash.slice(:a)
assert_equal Sinatra::IndifferentHash[b: :b], @hash.slice(?b)
assert_equal Sinatra::IndifferentHash[3 => 3], @hash.slice(3)
assert_equal Sinatra::IndifferentHash.new, @hash.slice(:d)
assert_equal Sinatra::IndifferentHash[a: :a, b: :b, 3 => 3], @hash.slice(:a, :b, 3)
assert_equal Sinatra::IndifferentHash[simple_nested: { a: :a, ?b => :b }], @hash.slice(:simple_nested)
assert_equal Sinatra::IndifferentHash[nested: { a: [{ a: :a, ?b => :b }, :c, 4], ?f => :f, 7 => 7 }], @hash.slice(:nested)
end

def test_fetch_values
skip_if_lacking :fetch_values

Expand Down

0 comments on commit 83a2a69

Please sign in to comment.