Skip to content

Commit 4e6c286

Browse files
committed
rename has_key? to include?, add key? and has_key? as aliases
1 parent e38ab84 commit 4e6c286

File tree

2 files changed

+44
-28
lines changed

2 files changed

+44
-28
lines changed

lib/ostruct.rb

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -389,23 +389,25 @@ def delete_field(name, &block)
389389
#
390390
# require "ostruct"
391391
# person = OpenStruct.new("name" => "John Smith", :age => 70)
392-
# person.has_key?(:name) # => true
393-
# person.has_key?("age") # => true
394-
# person.has_key?(:phone) # => false
392+
# person.include?(:name) # => true
393+
# person.include?("age") # => true
394+
# person.include?(:phone) # => false
395395
#
396396
# This method can be used to test for the presence of a value without creating
397397
# an accessor method if it doesn't exist:
398398
#
399399
# person = OpenStruct.new
400400
# person.name = "John"
401-
# person.has_key?(:name) # => true
402-
# person.has_key?(:age) # => false
401+
# person.include?(:name) # => true
402+
# person.include?(:age) # => false
403403
# person.age # => nil (but creates an accessor)
404-
# person.has_key?(:age) # => false
404+
# person.include?(:age) # => false
405405
#
406-
def has_key?(name)
406+
def include?(name)
407407
@table.has_key?(name.to_sym)
408408
end
409+
alias_method :has_key?, :include?
410+
alias_method :key?, :include?
409411

410412
InspectKey = :__inspect_key__ # :nodoc:
411413

test/ostruct/test_ostruct.rb

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -442,48 +442,62 @@ def test_performance_warning
442442
def setup
443443
end
444444

445-
def test_has_key_with_symbol
445+
def test_has_key_alias
446+
o = OpenStruct.new(name: "John Smith", age: 70)
447+
assert_equal o.include?(:name), o.has_key?(:name)
448+
assert_equal o.include?("name"), o.has_key?("name")
449+
assert_equal o.include?(:missing), o.has_key?(:missing)
450+
end
451+
452+
def test_include_with_symbol
446453
o = OpenStruct.new(name: "John Smith", age: 70, pension: 300)
447-
assert_true o.has_key?(:name)
448-
assert_true o.has_key?(:age)
449-
assert_true o.has_key?(:pension)
450-
assert_false o.has_key?(:address)
454+
assert_true o.include?(:name)
455+
assert_true o.include?(:age)
456+
assert_true o.include?(:pension)
457+
assert_false o.include?(:address)
451458
end
452459

453-
def test_has_key_with_string
460+
def test_include_with_string
454461
o = OpenStruct.new(name: "John Smith", age: 70, pension: 300)
455-
assert_true o.has_key?("name")
456-
assert_true o.has_key?("age")
457-
assert_true o.has_key?("pension")
458-
assert_false o.has_key?("address")
462+
assert_true o.include?("name")
463+
assert_true o.include?("age")
464+
assert_true o.include?("pension")
465+
assert_false o.include?("address")
459466
end
460467

461-
def test_has_key_after_deletion
468+
def test_include_after_deletion
462469
o = OpenStruct.new(name: "John Smith", age: 70, pension: 300)
463470
o.delete_field(:name)
464-
assert_false o.has_key?(:name)
471+
assert_false o.include?(:name)
465472
end
466473

467-
def test_has_key_with_nil_value
474+
def test_include_with_nil_value
468475
o = OpenStruct.new(name: "John Smith", age: 70, pension: 300)
469476
o.pension = nil
470-
assert_true o.has_key?(:pension)
477+
assert_true o.include?(:pension)
471478
end
472479

473-
def test_has_key_with_new_ostruct
480+
def test_include_with_new_ostruct
474481
os = OpenStruct.new
475-
assert_false os.has_key?(:any_key)
482+
assert_false os.include?(:any_key)
476483
end
477484

478-
def test_has_key_after_setting_value
485+
def test_include_after_setting_value
479486
o = OpenStruct.new(name: "John Smith", age: 70, pension: 300)
480487
o.phone = "123-456-7890"
481-
assert_true o.has_key?(:phone)
488+
assert_true o.include?(:phone)
482489
end
483490

484-
def test_has_key_case_sensitivity
491+
def test_include_case_sensitivity
485492
o = OpenStruct.new(name: "John Smith", age: 70, pension: 300)
486-
assert_true o.has_key?(:name)
487-
assert_false o.has_key?(:Name)
493+
assert_true o.include?(:name)
494+
assert_false o.include?(:Name)
495+
end
496+
497+
def test_key_alias
498+
o = OpenStruct.new(name: "John Smith", age: 70)
499+
assert_equal o.include?(:name), o.key?(:name)
500+
assert_equal o.include?("name"), o.key?("name")
501+
assert_equal o.include?(:missing), o.key?(:missing)
488502
end
489503
end

0 commit comments

Comments
 (0)