RosettaCodeData/Task/Extend-your-language/Ruby/extend-your-language-1.rb

24 lines
550 B
Ruby
Raw Permalink Normal View History

2013-04-10 16:57:12 -07:00
# Define a class which always returns itself for everything
class HopelesslyEgocentric
2015-02-20 00:35:01 -05:00
def method_missing(what, *args) self end
2013-04-10 16:57:12 -07:00
end
2015-02-20 00:35:01 -05:00
def if2(cond1, cond2)
2013-04-10 16:57:12 -07:00
if cond1 and cond2
yield
HopelesslyEgocentric.new
elsif cond1
Class.new(HopelesslyEgocentric) do
2015-02-20 00:35:01 -05:00
def else1; yield; HopelesslyEgocentric.new end
2013-04-10 16:57:12 -07:00
end.new
elsif cond2
Class.new(HopelesslyEgocentric) do
2015-02-20 00:35:01 -05:00
def else2; yield; HopelesslyEgocentric.new end
2013-04-10 16:57:12 -07:00
end.new
else
Class.new(HopelesslyEgocentric) do
2015-02-20 00:35:01 -05:00
def neither; yield end
2013-04-10 16:57:12 -07:00
end.new
end
end