oop/module_refinements_parens.rb

tests/_examples/oop/module_refinements_parens.rb in the metorex repository.

collected = []

Refiner = Module.new do
  refine String do
    collected << self
  end

  refine Array do
    collected << self
  end
end

Plain = Module.new do
  include(Refiner)
end

puts(Refiner.refinements.length.inspect)
puts((Refiner.refinements == collected).inspect)
puts(Plain.refinements.inspect)
puts(Module.new.refinements.inspect)

ignore_all = -> * { :any }
puts(ignore_all.call(1, 2, 3).inspect)

named_rest = -> *rest { rest }
puts(named_rest.call(4, 5).inspect)

parenthesized = ->(*) { :parens }
puts(parenthesized.call(6).inspect)

Output:

2
true
[]
[]
:any
[4, 5]
:parens