aboutsummaryrefslogtreecommitdiff
path: root/azalea-brigadier/src/arguments
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2023-10-12 22:01:15 -0500
committermat <git@matdoes.dev>2023-10-12 22:01:15 -0500
commit79ad1e93bf6ce2b7c2da6925a7c85b33bb76f154 (patch)
tree19004abf51cb19eb3b5cc13c61d670889cb228a0 /azalea-brigadier/src/arguments
parentf505ace721d4c214cd32143febd0a066b6b95ce5 (diff)
downloadazalea-drasl-79ad1e93bf6ce2b7c2da6925a7c85b33bb76f154.tar.xz
brigadier suggestions
closes #109
Diffstat (limited to 'azalea-brigadier/src/arguments')
-rwxr-xr-xazalea-brigadier/src/arguments/argument_type.rs14
-rw-r--r--azalea-brigadier/src/arguments/bool_argument_type.rs19
-rw-r--r--azalea-brigadier/src/arguments/double_argument_type.rs7
-rw-r--r--azalea-brigadier/src/arguments/float_argument_type.rs7
-rw-r--r--azalea-brigadier/src/arguments/integer_argument_type.rs7
-rw-r--r--azalea-brigadier/src/arguments/long_argument_type.rs7
-rw-r--r--azalea-brigadier/src/arguments/string_argument_type.rs11
7 files changed, 70 insertions, 2 deletions
diff --git a/azalea-brigadier/src/arguments/argument_type.rs b/azalea-brigadier/src/arguments/argument_type.rs
index f44233e1..d7bfa7d6 100755
--- a/azalea-brigadier/src/arguments/argument_type.rs
+++ b/azalea-brigadier/src/arguments/argument_type.rs
@@ -1,7 +1,19 @@
use std::{any::Any, sync::Arc};
-use crate::{exceptions::CommandSyntaxException, string_reader::StringReader};
+use crate::{
+ exceptions::CommandSyntaxException,
+ string_reader::StringReader,
+ suggestion::{Suggestions, SuggestionsBuilder},
+};
pub trait ArgumentType {
fn parse(&self, reader: &mut StringReader) -> Result<Arc<dyn Any>, CommandSyntaxException>;
+
+ fn list_suggestions(&self, _builder: SuggestionsBuilder) -> Suggestions {
+ Suggestions::default()
+ }
+
+ fn examples(&self) -> Vec<String> {
+ vec![]
+ }
}
diff --git a/azalea-brigadier/src/arguments/bool_argument_type.rs b/azalea-brigadier/src/arguments/bool_argument_type.rs
index 2e348c7b..a73a9da5 100644
--- a/azalea-brigadier/src/arguments/bool_argument_type.rs
+++ b/azalea-brigadier/src/arguments/bool_argument_type.rs
@@ -1,7 +1,10 @@
use std::{any::Any, sync::Arc};
use crate::{
- context::CommandContext, exceptions::CommandSyntaxException, string_reader::StringReader,
+ context::CommandContext,
+ exceptions::CommandSyntaxException,
+ string_reader::StringReader,
+ suggestion::{Suggestions, SuggestionsBuilder},
};
use super::ArgumentType;
@@ -13,6 +16,20 @@ impl ArgumentType for Boolean {
fn parse(&self, reader: &mut StringReader) -> Result<Arc<dyn Any>, CommandSyntaxException> {
Ok(Arc::new(reader.read_boolean()?))
}
+
+ fn list_suggestions(&self, mut builder: SuggestionsBuilder) -> Suggestions {
+ if "true".starts_with(builder.remaining_lowercase()) {
+ builder = builder.suggest("true");
+ }
+ if "false".starts_with(builder.remaining_lowercase()) {
+ builder = builder.suggest("false");
+ }
+ builder.build()
+ }
+
+ fn examples(&self) -> Vec<String> {
+ vec!["true".to_string(), "false".to_string()]
+ }
}
pub fn bool() -> impl ArgumentType {
diff --git a/azalea-brigadier/src/arguments/double_argument_type.rs b/azalea-brigadier/src/arguments/double_argument_type.rs
index 9502a680..ea99f1cf 100644
--- a/azalea-brigadier/src/arguments/double_argument_type.rs
+++ b/azalea-brigadier/src/arguments/double_argument_type.rs
@@ -40,6 +40,13 @@ impl ArgumentType for Double {
}
Ok(Arc::new(result))
}
+
+ fn examples(&self) -> Vec<String> {
+ vec!["0", "1.2", ".5", "-1", "-.5", "-1234.56"]
+ .into_iter()
+ .map(|s| s.to_string())
+ .collect()
+ }
}
pub fn double() -> impl ArgumentType {
diff --git a/azalea-brigadier/src/arguments/float_argument_type.rs b/azalea-brigadier/src/arguments/float_argument_type.rs
index a2831a08..2333499a 100644
--- a/azalea-brigadier/src/arguments/float_argument_type.rs
+++ b/azalea-brigadier/src/arguments/float_argument_type.rs
@@ -40,6 +40,13 @@ impl ArgumentType for Float {
}
Ok(Arc::new(result))
}
+
+ fn examples(&self) -> Vec<String> {
+ vec!["0", "1.2", ".5", "-1", "-.5", "-1234.56"]
+ .into_iter()
+ .map(|s| s.to_string())
+ .collect()
+ }
}
pub fn float() -> impl ArgumentType {
diff --git a/azalea-brigadier/src/arguments/integer_argument_type.rs b/azalea-brigadier/src/arguments/integer_argument_type.rs
index a31a6e70..cc4755ee 100644
--- a/azalea-brigadier/src/arguments/integer_argument_type.rs
+++ b/azalea-brigadier/src/arguments/integer_argument_type.rs
@@ -40,6 +40,13 @@ impl ArgumentType for Integer {
}
Ok(Arc::new(result))
}
+
+ fn examples(&self) -> Vec<String> {
+ vec!["0", "123", "-123"]
+ .into_iter()
+ .map(|s| s.to_string())
+ .collect()
+ }
}
pub fn integer() -> impl ArgumentType {
diff --git a/azalea-brigadier/src/arguments/long_argument_type.rs b/azalea-brigadier/src/arguments/long_argument_type.rs
index d557881a..4e36abee 100644
--- a/azalea-brigadier/src/arguments/long_argument_type.rs
+++ b/azalea-brigadier/src/arguments/long_argument_type.rs
@@ -40,6 +40,13 @@ impl ArgumentType for Long {
}
Ok(Arc::new(result))
}
+
+ fn examples(&self) -> Vec<String> {
+ vec!["0", "123", "-123"]
+ .into_iter()
+ .map(|s| s.to_string())
+ .collect()
+ }
}
pub fn long() -> impl ArgumentType {
diff --git a/azalea-brigadier/src/arguments/string_argument_type.rs b/azalea-brigadier/src/arguments/string_argument_type.rs
index 9fd70d13..d38fbc79 100644
--- a/azalea-brigadier/src/arguments/string_argument_type.rs
+++ b/azalea-brigadier/src/arguments/string_argument_type.rs
@@ -29,6 +29,17 @@ impl ArgumentType for StringArgument {
};
Ok(Arc::new(result))
}
+
+ fn examples(&self) -> Vec<String> {
+ match self {
+ StringArgument::SingleWord => vec!["word", "words_with_underscores"],
+ StringArgument::QuotablePhrase => vec!["\"quoted phrase\"", "word", "\"\""],
+ StringArgument::GreedyPhrase => vec!["word", "words with spaces", "\"and symbols\""],
+ }
+ .into_iter()
+ .map(|s| s.to_string())
+ .collect()
+ }
}
/// Match up until the next space.