aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMishio595 <[email protected]>2018-08-02 18:48:02 -0600
committerMishio595 <[email protected]>2018-08-02 18:48:02 -0600
commita9fccb18bf975d154378072766d887fa3bce0c5e (patch)
tree38517377e01bbfc06f48e10c193212b6f45c0cab /src
parentfix a line in cache/mod.rs (diff)
parentAdd a test-case for no delimiters (diff)
downloadserenity-a9fccb18bf975d154378072766d887fa3bce0c5e.tar.xz
serenity-a9fccb18bf975d154378072766d887fa3bce0c5e.zip
Merge branch 'upstream'
Diffstat (limited to 'src')
-rw-r--r--src/client/dispatch.rs2
-rw-r--r--src/framework/standard/args.rs28
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);
+ }
}