"Rasputin" <rasputnik / hellooperator.net> schrieb im Newsbeitrag
news:3FFAA3AE.9000602 / hellooperator.net...
> Jamis Buck wrote:
>
> > GGarramuno wrote:
> >
> >> 1) I assume the question will be no, but is it possible to evaluate a
> >> piece of proc code for syntax errors?  That is, I have a construct of
> >> the form:
> >>
> >>       text = "some text coming from somewhere"
> >>       code = proc { text }
> >>
> >> I'd like to know whether text is valid ruby code (syntactically),
> >> without having to run the proc.  In perl, this would be done by
> >> running eval on the code, as perl compiles to bytecode the proc even
> >> if not running it.
> >> But in ruby, it seems the proc is not "compiled" until run.  Is there
> >> any work-around for this?
> >
> > If you pass the code to eval, you can then test for a SyntaxError
> > exception, like so:
> >
> >  text = "some text coming from somewhere"
> >  begin
> >     eval "text"
> >  rescue SyntaxError => e
> >     # do something when it has a syntax error
> >  end
> >
>
> But that would execute the code, wouldn't it?

Yes.  How about:

text = "some text coming from somewhere"
begin
   eval "def foo; #{text} ; end"
rescue SyntaxError => e
   # do something when it has a syntax error
end

    robert