diff options
Diffstat (limited to 'src/poem/anthology.rs')
-rw-r--r-- | src/poem/anthology.rs | 41 |
1 files changed, 3 insertions, 38 deletions
diff --git a/src/poem/anthology.rs b/src/poem/anthology.rs index a35eafb..086864c 100644 --- a/src/poem/anthology.rs +++ b/src/poem/anthology.rs @@ -29,38 +29,6 @@ pub fn lookup(verb: &str) -> Option<usize> { INDEX.iter().position(|v| v.to_string() == verb) } -/// Run a builtin command, based on its verb -/// -/// Use [lookup] to check if a verb is in the anthology's index (i.e. is a -/// builtin), then call this with the current verse, the index found by -/// [lookup], and the shell's global environment state. -/// -/// # Example -/// ``` -/// let index = anthology::lookup(verse.verb()); -/// if index.is_some() { -/// anthology::incant(&verse, index.unwrap(), env); -/// } else { -/// // Run an external command -/// ... -/// } -/// ``` -// pub fn incant(verse: &Verse, out: &mut Vec<u8>, index: usize, env: &mut Environment) -> i32 { -// // let verb = INDEX[index]; -// // match verb { -// // "alias" => alias::incant(verse, out, &mut env.aliases), -// // "cd" => cd::incant(verse), -// // "exit" => exit::incant(), -// // "export" => export::incant(verse), -// // "source" => source::incant(verse, out, env), -// // "unalias" => alias::unincant(verse, &mut env.aliases), -// // "unset" => export::unincant(verse), -// // "which" => which::incant(verse, out, env), -// // _ => unreachable!(), -// // } -// 0 -// } - #[derive(Debug, PartialEq, Eq, Clone)] pub struct AnthologyStdin { data: Vec<u8>, @@ -101,9 +69,9 @@ impl Anthology { /// ``` /// let mut command = Anthology::new("alias"); /// ``` - pub fn new(verb: String) -> Self { + pub fn new(i: usize) -> Self { Anthology { - verb, + verb: INDEX[i].to_string(), clause: None, uin: false, uout: false, @@ -148,11 +116,8 @@ impl Anthology { } pub fn spawn(&mut self, env: &mut Environment) -> Result<Self, io::Error> { - let index = lookup(self.verb.as_str()).unwrap(); - let verb = INDEX[index]; - // Incant the built-in and set the output - self.output = Some(match verb { + self.output = Some(match self.verb.as_str() { "alias" => alias::incant(&self.clause, self.uout, &mut env.aliases), "cd" => cd::incant(&self.clause, self.uerr), "exit" => exit::incant(), |