metaprogramming/alias_in_core_subclasses_no_parens.rb

tests/_examples/metaprogramming/alias_in_core_subclasses_no_parens.rb in the metorex repository.

# A class below a core class gives a second name to a method the core class
# answers natively, with alias or alias_method.
class Keys < Hash
  alias_method :each_name, :each_key
end

Keys[{ a: 1, b: 2 }].each_name { |name| p name }

class List < Array
  alias count_of size
  alias pick fetch
  alias every each
end

list = List.new([5, 6])
p list.count_of, (list.pick 1), (list.pick 9, :none)
list.every { |item| p item }

class Text < String
  alias shout upcase
end

p Text.new("hi").shout

Output:

:a
:b
2
6
:none
5
6
"HI"