3 个版本
0.3.3 | 2022年5月1日 |
---|---|
0.3.2 | 2022年4月25日 |
0.2.6 |
|
0.2.5 |
|
0.0.1 |
|
#360 在 命令行界面
每月 30 次下载
380KB
872 行
caprice 是一个 Rust 项目的交互式解释器 (REPL),具有易用、类似 zsh 的自动完成功能。
使用来自 Piston 的旋转方块示例
使用方法
- 输入 /list 将按字母顺序打印 caprice 控制台中的所有可用标记
- 按 Tab 键将在所有自动完成建议之间循环
caprice 使用 crossterm 作为其终端模拟器。
示例
use caprice::{Caprice, CapriceCommand};
use std::thread;
use std::time::Duration;
fn main() {
let mut caprice = Caprice::new()
.set_prompt("!:") // set the prompt
.disable_ctrl_c() // pressing control + c won't close the caprice console
.set_keywords(&[ // set some tokens
"some_token".to_owned(),
"some_other_token".to_owned(),
"exit".to_owned(), // an exit keyword
])
.init(); // initialises the caprice terminal
// caprice.run() will run the caprice in a separate thread.
// you can use the returned tx and rx channels for receiving and sending messages
// to caprice instance
let (tx, rx, caprice_handle) = caprice.run().unwrap();
// our main application runs here
// for this example we will simply print back
// the tokens send by caprice
loop {
// if we received a token from caprice
if let Ok(token) = rx.try_recv() {
match token.as_str() {
// leave if the user types exit
"exit" => {
tx.send(CapriceCommand::Println("bye".to_owned())).unwrap();
tx.send(CapriceCommand::Exit).unwrap();
caprice_handle.join().expect("couldn't join thread").expect("Caprice run has encountered an error");
break; // at this point caprice has already exited, let the main process do as well
},
// else send back the token to be printed
_ => {
let print_token = format!("Got {} from Caprice", token);
tx.send(CapriceCommand::Println(print_token)).unwrap();
}
}
}
// let the thread sleep for some time
thread::sleep(Duration::from_millis(10));
}
}
版本
发布信息 在这里
依赖项
~3–15MB
~137K SLoC