Expand description
This module contains a routines for running and utilizing an interacting session with a Session
.
use expectrl::{interact::{InteractOptions, actions::lookup::Lookup}, spawn, stream::stdin::Stdin, Regex};
#[derive(Debug)]
enum Answer {
Yes,
No,
Unrecognized,
}
let mut session = spawn("cat").expect("Can't spawn a session");
let mut input_action = Lookup::new();
let mut stdin = Stdin::open().unwrap();
let stdout = std::io::stdout();
let mut opts = InteractOptions::new(Answer::Unrecognized)
.on_input(|mut ctx| {
let m = input_action.on(ctx.buf, ctx.eof, "yes")?;
if m.is_some() {
*ctx.state = Answer::Yes;
};
let m = input_action.on(ctx.buf, ctx.eof, "no")?;
if m.is_some() {
*ctx.state = Answer::No;
};
Ok(false)
});
session.interact(&mut stdin, stdout)
.spawn(&mut opts)
.expect("Failed to run an interact session");
let answer = opts.into_inner();
stdin.close().unwrap();
println!("It was said {:?}", answer);
Modules
- The module contains a list of helpers for callbacks in
InteractSession
Structs
- Context provides an interface to use a
Session
, IO streams and a state. - Interact options (aka callbacks you can set to be callled being in an interactive mode).
- InteractConfig represents options of an interactive session.
Type Definitions
- A helper type to set a default action to
InteractSession
. - A helper type to set a default filter to
InteractSession
.