From 48e794861b06552169778b797044a46e70aa4547 Mon Sep 17 00:00:00 2001
From: Alex Janka <alex@alexjanka.com>
Date: Thu, 18 May 2023 11:01:26 +1000
Subject: [PATCH] better debug command parsing

---
 gb-emu/src/debug.rs | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/gb-emu/src/debug.rs b/gb-emu/src/debug.rs
index aa7f30c..236d152 100644
--- a/gb-emu/src/debug.rs
+++ b/gb-emu/src/debug.rs
@@ -22,19 +22,20 @@ impl FromStr for Commands {
     type Err = CommandErr;
 
     fn from_str(s: &str) -> Result<Self, Self::Err> {
-        let lower = s.trim().to_lowercase();
+        let trimmed = s.trim().to_lowercase();
+        let words: Vec<&str> = trimmed.split_whitespace().collect();
 
-        match lower.as_str() {
-            "step" => Ok(Self::Step),
-            "continue" => Ok(Self::Continue),
-            _ if let Some(addr) = lower.strip_prefix("watch") => {
+        match words.as_slice() {
+            ["step"] => Ok(Self::Step),
+            ["continue"] => Ok(Self::Continue),
+            ["watch", addr] => {
                 if let Ok(addr) = u16::from_str_radix(addr.trim().trim_start_matches("0x"), 16) {
                     Ok(Self::Watch(addr))
                 } else {
                     Err(CommandErr::InvalidArgument)
                 }
             }
-            _ if let Some(addr) = lower.strip_prefix("break") => {
+            ["break", addr] => {
                 if let Ok(addr) = u16::from_str_radix(addr.trim().trim_start_matches("0x"), 16) {
                     Ok(Self::Break(addr))
                 } else {