#json-schema #json-parser #interactive #json #parser #schemars

interactive-parse

JsonSchema类型的交互式解析器

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

MIT 许可证

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