> I'm trying to wrap function definitions, and cannot find a way to
> refer to a block from inside the code I generate and subsequently pass
> to class_eval:

Try this, it barks at me :).

  class Module
    def fdef name, &block
      self.const_set("Block_for_#{name}", block)
      code = <<-EOC
      def #{name}
        # somehow yield to block #{block}     <------
        self.class.const_get("Block_for_#{name}").call()
      end
      EOC
      class_eval code
    end
  end

  class Foo
    fdef("bar") { puts "bar!" }
  end

  Foo.new.bar	# => expecting "bar!"

> Something completely different: the manual claims that the construct
> <<-EOF strips all leading whitespace from the here document. It
> doesn't... (ruby 1.6.1 (2000-09-27) [i686-linux])

Um.. I'd guess the manual is just misleading. The Book says at page 204-205:


  You can put a minus sign immediately after the << characters, 
  in which case the terminator can be indented from the left margin.

So if I'm not mistaken, it does not give a hint <<-HEREDOC_WITH_MINUS would
modify the heredoced string in any way. If I recall correctly, there was
some discussions about autostripping or indentation or something else
previously at ruby-talk. So please, check the archives for that.

	- Aleksi