aboutsummaryrefslogtreecommitdiff
path: root/src/framework
diff options
context:
space:
mode:
authoracdenisSK <[email protected]>2018-07-19 11:42:28 +0200
committeracdenisSK <[email protected]>2018-07-19 11:42:28 +0200
commite5c05a3e08a04260bb6e6132050c5ce0f4fb6f5e (patch)
tree0f1a0f0640a91e965d40bd272c072e0c1b3a8d4c /src/framework
parentStyle Line (diff)
downloadserenity-e5c05a3e08a04260bb6e6132050c5ce0f4fb6f5e.tar.xz
serenity-e5c05a3e08a04260bb6e6132050c5ce0f4fb6f5e.zip
Use `current` to figure out the end quote
Diffstat (limited to 'src/framework')
-rw-r--r--src/framework/standard/args.rs21
1 files changed, 4 insertions, 17 deletions
diff --git a/src/framework/standard/args.rs b/src/framework/standard/args.rs
index 310fcf0..d561e30 100644
--- a/src/framework/standard/args.rs
+++ b/src/framework/standard/args.rs
@@ -53,20 +53,6 @@ impl<E: StdError> fmt::Display for Error<E> {
type Result<T, E> = ::std::result::Result<T, Error<E>>;
-fn find_start(s: &str, i: usize) -> Option<usize> {
- if i > s.len() {
- return None;
- }
-
- let mut start = i - 1;
-
- while !s.is_char_boundary(start) {
- start -= 1;
- }
-
- Some(start)
-}
-
fn find_end(s: &str, i: usize) -> Option<usize> {
if i > s.len() {
return None;
@@ -165,15 +151,16 @@ impl<'a> Lexer<'a> {
self.next();
}
+ let is_quote = self.current().map_or(false, |s| s == "\"");
self.next();
let end = self.offset;
- return Some(if self.at_end() && &self.msg[find_start(self.msg, end).unwrap()..end] != "\"" {
+ return Some(if is_quote {
+ Token::new(TokenKind::QuotedArgument, &self.msg[start..end], start)
+ } else {
// We're missing an end quote. View this as a normal argument.
Token::new(TokenKind::Argument, &self.msg[start..], start)
- } else {
- Token::new(TokenKind::QuotedArgument, &self.msg[start..end], start)
});
}