diff options
| author | Mishio595 <[email protected]> | 2018-08-02 18:48:02 -0600 |
|---|---|---|
| committer | Mishio595 <[email protected]> | 2018-08-02 18:48:02 -0600 |
| commit | a9fccb18bf975d154378072766d887fa3bce0c5e (patch) | |
| tree | 38517377e01bbfc06f48e10c193212b6f45c0cab /src | |
| parent | fix a line in cache/mod.rs (diff) | |
| parent | Add a test-case for no delimiters (diff) | |
| download | serenity-a9fccb18bf975d154378072766d887fa3bce0c5e.tar.xz serenity-a9fccb18bf975d154378072766d887fa3bce0c5e.zip | |
Merge branch 'upstream'
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/dispatch.rs | 2 | ||||
| -rw-r--r-- | src/framework/standard/args.rs | 28 |
2 files changed, 22 insertions, 8 deletions
diff --git a/src/client/dispatch.rs b/src/client/dispatch.rs index 663a283..b8c5610 100644 --- a/src/client/dispatch.rs +++ b/src/client/dispatch.rs @@ -95,7 +95,7 @@ pub(crate) fn dispatch<H: EventHandler + Send + Sync + 'static>( shard_id: u64, ) { match event { - DispatchEvent::Model(Event::MessageCreate(event)) => { + DispatchEvent::Model(Event::MessageCreate(mut event)) => { update!(event); let context = context(data, runner_tx, shard_id); diff --git a/src/framework/standard/args.rs b/src/framework/standard/args.rs index 0b915b6..8a622af 100644 --- a/src/framework/standard/args.rs +++ b/src/framework/standard/args.rs @@ -300,16 +300,21 @@ impl Args { .flat_map(|s| s.chars()) .collect::<Vec<_>>(); - let mut lex = Lexer::new(message, &delims); - let mut args = Vec::new(); - while let Some(token) = lex.commit() { - if token.kind == TokenKind::Delimiter { - continue; - } + // If there are no delimiters, then the only possible argument is the whole message. + if delims.is_empty() && !message.is_empty() { + args.push(Token::new(TokenKind::Argument, &message[..], 0)); + } else { + let mut lex = Lexer::new(message, &delims); - args.push(token); + while let Some(token) = lex.commit() { + if token.kind == TokenKind::Delimiter { + continue; + } + + args.push(token); + } } Args { @@ -1376,4 +1381,13 @@ mod test { assert_matches!(args.single_quoted::<i32>().unwrap_err(), ArgError::Parse(_)); assert_eq!(args.remaining(), 2); } + + #[test] + fn no_delims_entire_message() { + let mut args = Args::new("abc", &[]); + + assert_eq!(args.remaining(), 1); + assert_eq!(args.single::<String>().unwrap(), "abc"); + assert_eq!(args.remaining(), 0); + } } |