Does Ruby expect module support multiple selections?


#1

Hi,

I want to use PTY.spawn(some shell program) and then use expect method
to decide what should be inputed next step.
But my shell program output is not fixed. It depends on the
environment on which it runs. So my question is, does ruby support
multiple expect?
If so, my code can be like:
PTY.spawn(my shell program) do |reader, writer, pid|
reader.expect(/a|b/) do |str|
if str.match(/a/)
do something
else
do something else
end
end

Thanks very much!


#2

On Jun 14, 2006, at 3:30 AM, Jia Zhang wrote:

reader.expect(/a|b/) do |str|


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

Well I just looked at the source, and you can do exactly this. In
fact, expect does you one better, if you use groups in your regexp it
yields you those two

e.g.

reader.expect(/(a|b|c)e/) do |whole_string, first_group,
second_group, etc|

...

end


#3

Many thanks.
My problem is solved.

Logan C. wrote:

On Jun 14, 2006, at 3:30 AM, Jia Zhang wrote:

reader.expect(/a|b/) do |str|


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

Well I just looked at the source, and you can do exactly this. In
fact, expect does you one better, if you use groups in your regexp it
yields you those two

e.g.

reader.expect(/(a|b|c)e/) do |whole_string, first_group,
second_group, etc|

...

end