Skip to content

Instantly share code, notes, and snippets.

@jarmo
Created June 12, 2016 10:56
Show Gist options
  • Save jarmo/6ada7519a657c47d146da852ad2c77d9 to your computer and use it in GitHub Desktop.
Save jarmo/6ada7519a657c47d146da852ad2c77d9 to your computer and use it in GitHub Desktop.
class A
def call
foo do
yield if block_given?
puts "a"
end
end
def foo
yield
puts "foo"
end
end
class B < A
def call
super do
yield if block_given?
puts "b"
end
end
end
class C < B
def call
super do
puts "c"
end
end
end
A.new.call
puts "A"
B.new.call
puts "B"
C.new.call
puts "C"
@jarmo
Copy link
Author

jarmo commented Jun 12, 2016

class A
  def call(&block)
    foo do
      block.call if block
      puts "a"
    end
  end

  def foo(&block)
    block.call
    puts "foo"
  end
end

class B < A
  def call(&block)
    super do
      block.call if block
      puts "b"
    end
  end
end

class C < B
  def call
    super do
      puts "c"
    end
  end
end

A.new.call
puts "A"

B.new.call
puts "B"

C.new.call
puts "C"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment