I'm trying to create a Regexp object by calling eval like this:
def eval_to_regexp(o)
if o.is_a?(Regexp)
o
elsif o.is_a?(String)
o = o[5..o.size] if o[0..4] == 'eval:'
eval("/#{o}/")
else
eval("/#{o.to_s}/")
end
end
e = eval_to_regexp("eval:some_function() + '^'")
Suppose some_function() returns the string '/home/test'
And then I use it to test a match as follows:
'/home/test' =~ e # should return 0
'/home/test/somethingelse' =~ e # should return nil (because of the '^'
above)
I also tried using /#{o}/ directly instead of the eval, but it doesn't
work either
I'm trying to create a Regexp object by calling eval like this:
def eval_to_regexp(o)
if o.is_a?(Regexp)
o
elsif o.is_a?(String)
o = o[5..o.size] if o[0..4] == 'eval:'
eval("/#{o}/")
else
eval("/#{o.to_s}/")
end
end
e = eval_to_regexp("eval:some_function() + '^'")
Suppose some_function() returns the string '/home/test'
And then I use it to test a match as follows:
'/home/test' =~ e # should return 0
'/home/test/somethingelse' =~ e # should return nil (because of the '^'
above)
I also tried using /#{o}/ directly instead of the eval, but it doesn't
work either
I think you might have better luck with Regexp.new:
I'm trying to create a Regexp object by calling eval like this:
I'm sorry, but why don't you just do regexp=Regexp.new(your_string) ?
Because I didn't thought about that and I'm a complete newb regarding
Ruby and Regexp (in general), as pointed out by David's correction (the
'^' is for the start of the string, not the end - thanks!).
>> I'm trying to create a Regexp object by calling eval like this:
>
> I'm sorry, but why don't you just do regexp=Regexp.new(your_string) ?
Because I didn't thought about that and I'm a complete newb regarding
Ruby and Regexp (in general), as pointed out by David's correction (the
'^' is for the start of the string, not the end - thanks!).
Be careful about eval()! I definitely enjoy eval() but you need to
have some perspective. It's not for newbs.