Skip to content

Commit 4758a89

Browse files
committed
rename has_key? to include?, add key? and has_key? as aliases
1 parent cb60f63 commit 4758a89

2 files changed

Lines changed: 44 additions & 28 deletions

File tree

lib/ostruct.rb

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -386,23 +386,25 @@ def delete_field(name, &block)
386386
#
387387
# require "ostruct"
388388
# person = OpenStruct.new("name" => "John Smith", :age => 70)
389-
# person.has_key?(:name) # => true
390-
# person.has_key?("age") # => true
391-
# person.has_key?(:phone) # => false
389+
# person.include?(:name) # => true
390+
# person.include?("age") # => true
391+
# person.include?(:phone) # => false
392392
#
393393
# This method can be used to test for the presence of a value without creating
394394
# an accessor method if it doesn't exist:
395395
#
396396
# person = OpenStruct.new
397397
# person.name = "John"
398-
# person.has_key?(:name) # => true
399-
# person.has_key?(:age) # => false
398+
# person.include?(:name) # => true
399+
# person.include?(:age) # => false
400400
# person.age # => nil (but creates an accessor)
401-
# person.has_key?(:age) # => false
401+
# person.include?(:age) # => false
402402
#
403-
def has_key?(name)
403+
def include?(name)
404404
@table.has_key?(name.to_sym)
405405
end
406+
alias_method :has_key?, :include?
407+
alias_method :key?, :include?
406408

407409
InspectKey = :__inspect_key__ # :nodoc:
408410

test/ostruct/test_ostruct.rb

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -434,48 +434,62 @@ def test_performance_warning
434434
def setup
435435
end
436436

437-
def test_has_key_with_symbol
437+
def test_has_key_alias
438+
o = OpenStruct.new(name: "John Smith", age: 70)
439+
assert_equal o.include?(:name), o.has_key?(:name)
440+
assert_equal o.include?("name"), o.has_key?("name")
441+
assert_equal o.include?(:missing), o.has_key?(:missing)
442+
end
443+
444+
def test_include_with_symbol
438445
o = OpenStruct.new(name: "John Smith", age: 70, pension: 300)
439-
assert_true o.has_key?(:name)
440-
assert_true o.has_key?(:age)
441-
assert_true o.has_key?(:pension)
442-
assert_false o.has_key?(:address)
446+
assert_true o.include?(:name)
447+
assert_true o.include?(:age)
448+
assert_true o.include?(:pension)
449+
assert_false o.include?(:address)
443450
end
444451

445-
def test_has_key_with_string
452+
def test_include_with_string
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_after_deletion
460+
def test_include_after_deletion
454461
o = OpenStruct.new(name: "John Smith", age: 70, pension: 300)
455462
o.delete_field(:name)
456-
assert_false o.has_key?(:name)
463+
assert_false o.include?(:name)
457464
end
458465

459-
def test_has_key_with_nil_value
466+
def test_include_with_nil_value
460467
o = OpenStruct.new(name: "John Smith", age: 70, pension: 300)
461468
o.pension = nil
462-
assert_true o.has_key?(:pension)
469+
assert_true o.include?(:pension)
463470
end
464471

465-
def test_has_key_with_new_ostruct
472+
def test_include_with_new_ostruct
466473
os = OpenStruct.new
467-
assert_false os.has_key?(:any_key)
474+
assert_false os.include?(:any_key)
468475
end
469476

470-
def test_has_key_after_setting_value
477+
def test_include_after_setting_value
471478
o = OpenStruct.new(name: "John Smith", age: 70, pension: 300)
472479
o.phone = "123-456-7890"
473-
assert_true o.has_key?(:phone)
480+
assert_true o.include?(:phone)
474481
end
475482

476-
def test_has_key_case_sensitivity
483+
def test_include_case_sensitivity
477484
o = OpenStruct.new(name: "John Smith", age: 70, pension: 300)
478-
assert_true o.has_key?(:name)
479-
assert_false o.has_key?(:Name)
485+
assert_true o.include?(:name)
486+
assert_false o.include?(:Name)
487+
end
488+
489+
def test_key_alias
490+
o = OpenStruct.new(name: "John Smith", age: 70)
491+
assert_equal o.include?(:name), o.key?(:name)
492+
assert_equal o.include?("name"), o.key?("name")
493+
assert_equal o.include?(:missing), o.key?(:missing)
480494
end
481495
end

0 commit comments

Comments
 (0)