I’m prototyping a DSL and came across a situtation where I have a lambda
that I would like to give to instance_eval, but the lambda takes
arguments. Instance_eval will not supply any arguments when evaluating
the lambda and I don’t see a straightforward way around this.
Any suggestions?
Here’s a test case …
class Dummy
def f
:dummy_value
end
end
def instance_eval_with_args(obj, *args, &block)
Magic goes here to evaluate +block+ in the scope of
+obj+, yet pass a list of argument values to the block.
end
class TestInstanceEvalWithArgs < Test::Unit::TestCase
def test_instance_eval_with_args
# Create a block that returns the value of an argument and a value
# of a method call to +self+. This is the basic functionality I
need.
block = lambda { |a| [a, f] }
assert_equal [:arg_value, :dummy_value],
instance_eval_with_args(Dummy.new, :arg_value, &block)
end
end
–
– Jim W.