6个版本
0.1.5 | 2023年4月27日 |
---|---|
0.1.4 | 2023年1月20日 |
0.1.2 | 2022年12月27日 |
0.1.0 | 2022年11月30日 |
#2757 in 解析器实现
每月 31 次下载
用于 wasm-deploy
30KB
745 行
interactive-parse
JsonSchema类型的交互式解析器。
演示
用法
// Make sure you add these derives to your type
#[derive(JsonSchema, Deserialize, Debug)]
struct Git {
subcommand: SubCommand,
/// Using doc comments like these will add hints to the prompt
arg: String
}
#[derive(JsonSchema, Deserialize, Debug)]
enum SubCommand {
Commit {
/// interactive-parse automatically handles
/// any type that you can throw at it,
/// like options
message: Option<String>
},
Clone {
/// vecs, and more!
address: Vec<String>
}
}
// Bring the relevant traits into scope
use interactive_parse::{InteractiveParseObj, InteractiveParseVal};
fn main() {
// Parse the type to an object
let git = Git::parse_to_obj().unwrap();
// Or to a json value
let value = Git::parse_to_val().unwrap();
println!("{:?}", git);
}
酷炫特性
在多阶段提示符期间按 Esc
将撤销最后输入并返回到上一个子提示符。这个特性是新的,可能会在某些情况下跳过多个提示符,但仍然非常有用。由于这个包的递归性质,撤销操作非常复杂。
寻找其他贡献者
这是一个将JsonSchema类型以交互方式解析的简单方法,使用inquire。如果您对它进行了改进,请提交PR,如果您有任何问题或错误,请提交issue。我目前正在积极维护这个项目作为个人开发工具。
特别是,这个包需要适当的错误处理。在大多数情况下,如果遇到解析问题,包将panic。这不是理想的情况,肯定可以改进。
特别是,这个包需要适当的错误处理。在大多数情况下,如果遇到解析问题,包将panic。这不是理想的情况,肯定可以改进。
依赖关系
~4–15MB
~129K SLoC