aboutsummaryrefslogtreecommitdiff
path: root/src/framework
diff options
context:
space:
mode:
authorLakelezz <[email protected]>2018-08-11 14:32:01 +0200
committerGitHub <[email protected]>2018-08-11 14:32:01 +0200
commit516ede3649b74bca8631d05397e330cde0632fee (patch)
tree5daecf8a5d4e9d05df8a3c74422a70c453b8b545 /src/framework
parentFix `iter_quoted`'s doctest (diff)
downloadserenity-516ede3649b74bca8631d05397e330cde0632fee.tar.xz
serenity-516ede3649b74bca8631d05397e330cde0632fee.zip
Use one macro instead of the same code twice, avoid seperated changes. (#365)
Diffstat (limited to 'src/framework')
-rw-r--r--src/framework/standard/mod.rs31
1 files changed, 13 insertions, 18 deletions
diff --git a/src/framework/standard/mod.rs b/src/framework/standard/mod.rs
index 8731372..4f11e89 100644
--- a/src/framework/standard/mod.rs
+++ b/src/framework/standard/mod.rs
@@ -147,6 +147,17 @@ macro_rules! command {
};
}
+macro_rules! command_and_help_args {
+ ($message_content:expr, $position:expr, $command_length:expr, $delimiters:expr) => {
+ {
+ let content = $message_content.chars().skip($position).skip_while(|x| x.is_whitespace())
+ .skip($command_length).collect::<String>();
+
+ Args::new(&content.trim(), $delimiters)
+ }
+ };
+}
+
/// An enum representing all possible fail conditions under which a command won't
/// be executed.
#[derive(Debug)]
@@ -1072,15 +1083,7 @@ impl Framework for StandardFramework {
if let Some(help) = help {
let groups = self.groups.clone();
-
- // `Args`-construction here inside help-dispatch and the command-dispatch-section
- // shall stay identical, please update accordingly upon change.
- let mut args = {
- let content = message.content.chars().skip(position).skip_while(|x| x.is_whitespace())
- .skip(command_length).collect::<String>();
-
- Args::new(&content.trim(), &self.configuration.delimiters)
- };
+ let mut args = command_and_help_args!(&message.content, position, command_length, &self.configuration.delimiters);
threadpool.execute(move || {
@@ -1106,15 +1109,7 @@ impl Framework for StandardFramework {
if let Some(&CommandOrAlias::Command(ref command)) =
group.commands.get(&to_check) {
let command = Arc::clone(command);
-
- // `Args`-construction here inside command-dispatch and the help-dispatch
- // shall stay identical, please update accordingly upon change.
- let mut args = {
- let content = message.content.chars().skip(position).skip_while(|x| x.is_whitespace())
- .skip(command_length).collect::<String>();
-
- Args::new(&content.trim(), &self.configuration.delimiters)
- };
+ let mut args = command_and_help_args!(&message.content, position, command_length, &self.configuration.delimiters);
if let Some(error) = self.should_fail(
&mut context,