From 516ede3649b74bca8631d05397e330cde0632fee Mon Sep 17 00:00:00 2001 From: Lakelezz <12222135+Lakelezz@users.noreply.github.com> Date: Sat, 11 Aug 2018 14:32:01 +0200 Subject: [PATCH] Use one macro instead of the same code twice, avoid seperated changes. (#365) --- src/framework/standard/mod.rs | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/framework/standard/mod.rs b/src/framework/standard/mod.rs index 8731372bb03..4f11e89adb9 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::(); + + 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::(); - - 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::(); - - 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,