chiark / gitweb /
apitest: Refactor to make room for handling more piece ops
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 1 May 2022 16:03:11 +0000 (17:03 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 1 May 2022 17:22:36 +0000 (18:22 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
apitest/atmain.rs

index 3bf74d9060fc693dcd82d5fe29d62cf24c3d8984..35cbd52e525f9b2d7a23b0a8244ebd4ff6d595f5 100644 (file)
@@ -408,13 +408,6 @@ pub fn update_update_pieces<PI:Idx>(
   pieces: &mut Pieces<PI>,
   k: &str, v: &JsV
 ) {
-  if k != "Piece" { return }
-  let v = v.as_object().unwrap();
-  let piece = v["piece"].as_str().unwrap();
-  let p = pieces.iter_mut().find(|p| p.id == piece);
-  if_let!{ Some(p) = p; else return }
-  let (op, d) = v["op"].as_object().unwrap().iter().next().unwrap();
-
   fn coord(j: &JsV) -> Pos {
     PosC::from_iter_2(
       j.as_array().unwrap().iter()
@@ -422,24 +415,32 @@ pub fn update_update_pieces<PI:Idx>(
     )
   }
 
-  match op.as_str() {
-    "Move" => {
-      p.pos = coord(d);
-    },
-    "Modify" | "ModifyQuiet" => {
-      let d = d.as_object().unwrap();
-      p.pos = coord(&d["pos"]);
-      for (k,v) in d {
-        p.info
-          .as_object_mut().unwrap()
-          .insert(k.to_string(), v.clone());
-      }
-    },
-    _ => {
-      panic!("unknown op {:?} {:?}", &op, &d);
-    },
-  };
-  dbgc!(nick, k,v,p);
+  if k == "Piece" {
+    let v = v.as_object().unwrap();
+    let piece = v["piece"].as_str().unwrap();
+    let p = pieces.iter_mut().find(|p| p.id == piece);
+    let (op, d) = v["op"].as_object().unwrap().iter().next().unwrap();
+    if_let!{ Some(p) = p; else return }
+
+    match op.as_str() {
+      "Move" => {
+        p.pos = coord(d);
+      },
+      "Modify" | "ModifyQuiet" => {
+        let d = d.as_object().unwrap();
+        p.pos = coord(&d["pos"]);
+        for (k,v) in d {
+          p.info
+            .as_object_mut().unwrap()
+            .insert(k.to_string(), v.clone());
+        }
+      },
+      _ => {
+        panic!("unknown op {:?} {:?}", &op, &d);
+      },
+    };
+    dbgc!(nick, k,v,p);
+  }
 }
 
 pub type PieceOpData = (&'static str, JsV);