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 Weirich

-- 
Posted via http://www.ruby-forum.com/.