aboutsummaryrefslogtreecommitdiff
path: root/azalea-brigadier/src/lib.rs
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-04-17 14:02:13 -0500
committermat <github@matdoes.dev>2022-04-17 14:02:13 -0500
commita72a47ced76065caf739898954cd18edbc39174b (patch)
tree5526c7663f253bbd7c8318b9d98413f1f2074852 /azalea-brigadier/src/lib.rs
parent4ff67d4917ce333232189e86aee09f2d82451fc6 (diff)
downloadazalea-drasl-a72a47ced76065caf739898954cd18edbc39174b.tar.xz
Rewrite brigadier
Diffstat (limited to 'azalea-brigadier/src/lib.rs')
-rw-r--r--azalea-brigadier/src/lib.rs73
1 files changed, 48 insertions, 25 deletions
diff --git a/azalea-brigadier/src/lib.rs b/azalea-brigadier/src/lib.rs
index a1ac267c..476764d0 100644
--- a/azalea-brigadier/src/lib.rs
+++ b/azalea-brigadier/src/lib.rs
@@ -1,32 +1,55 @@
-#[macro_use]
-extern crate lazy_static;
-
-#[macro_use]
-extern crate enum_dispatch;
-
-mod ambiguity_consumer;
-mod arguments;
-mod builder;
-mod command;
-mod command_dispatcher;
-mod context;
-mod exceptions;
-mod immutable_string_reader;
-mod literal_message;
-mod message;
-mod parse_results;
-mod redirect_modifier;
-mod result_consumer;
-mod single_redirect_modifier;
-mod string_reader;
-mod suggestion;
-mod tree;
+pub mod builder;
+pub mod context;
+pub mod dispatcher;
+pub mod exceptions;
+pub mod message;
+pub mod modifier;
+pub mod parse_results;
+pub mod parsers;
+pub mod string_range;
+pub mod string_reader;
+pub mod tree;
#[cfg(test)]
mod tests {
+
+ use std::rc::Rc;
+
+ use crate::{
+ builder::{literal_argument_builder::literal, required_argument_builder::argument},
+ dispatcher::CommandDispatcher,
+ parsers::integer,
+ };
+
+ struct CommandSourceStack {
+ player: String,
+ }
+
#[test]
fn it_works() {
- let result = 2 + 2;
- assert_eq!(result, 4);
+ let mut dispatcher = CommandDispatcher::<Rc<CommandSourceStack>>::new();
+
+ let source = Rc::new(CommandSourceStack {
+ player: "player".to_string(),
+ });
+
+ dispatcher.register(
+ literal("foo")
+ .then(argument("bar", integer()).executes(|c| {
+ // println!("Bar is {}", get_integer(c, "bar"));
+ 2
+ }))
+ .executes(|c| {
+ println!("Called foo with no arguments");
+ 1
+ }),
+ );
+
+ let parse = dispatcher.parse("foo 123".to_string().into(), source);
+ println!(
+ "{}",
+ CommandDispatcher::<Rc<CommandSourceStack>>::execute(parse).unwrap()
+ );
+ // assert_eq!(dispatcher.execute("foo bar", source), 2);
}
}