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§
- actions
- The module contains a list of helpers for callbacks in
InteractSession
Structs§
- Context
- Context provides an interface to use a
Session, IO streams and a state. - Interact
Options - Interact options (aka callbacks you can set to be callled being in an interactive mode).
- Interact
Session - InteractConfig represents options of an interactive session.
Type Aliases§
- NoAction
- A helper type to set a default action to
InteractSession. - NoFilter
- A helper type to set a default filter to
InteractSession.