summaryrefslogtreecommitdiffstats
path: root/vendor/winnow-0.4.7/examples/css/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/winnow-0.4.7/examples/css/main.rs')
-rw-r--r--vendor/winnow-0.4.7/examples/css/main.rs62
1 files changed, 62 insertions, 0 deletions
diff --git a/vendor/winnow-0.4.7/examples/css/main.rs b/vendor/winnow-0.4.7/examples/css/main.rs
new file mode 100644
index 000000000..26c1b9212
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/css/main.rs
@@ -0,0 +1,62 @@
+use winnow::prelude::*;
+
+mod parser;
+
+use parser::hex_color;
+
+fn main() -> Result<(), lexopt::Error> {
+ let args = Args::parse()?;
+
+ let input = args.input.as_deref().unwrap_or("#AAAAAA");
+
+ println!("{} =", input);
+ match hex_color.parse(input) {
+ Ok(result) => {
+ println!(" {:?}", result);
+ }
+ Err(err) => {
+ println!(" {}", err);
+ }
+ }
+
+ Ok(())
+}
+
+#[derive(Default)]
+struct Args {
+ input: Option<String>,
+}
+
+impl Args {
+ fn parse() -> Result<Self, lexopt::Error> {
+ use lexopt::prelude::*;
+
+ let mut res = Args::default();
+
+ let mut args = lexopt::Parser::from_env();
+ while let Some(arg) = args.next()? {
+ match arg {
+ Value(input) => {
+ res.input = Some(input.string()?);
+ }
+ _ => return Err(arg.unexpected()),
+ }
+ }
+ Ok(res)
+ }
+}
+
+#[test]
+fn parse_color() {
+ assert_eq!(
+ hex_color("#2F14DF"),
+ Ok((
+ "",
+ parser::Color {
+ red: 47,
+ green: 20,
+ blue: 223,
+ }
+ ))
+ );
+}