chiark / gitweb /
script: Break out prep_add_uo
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 26 Jun 2022 01:28:18 +0000 (02:28 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 26 Jun 2022 01:29:11 +0000 (02:29 +0100)
We'll need this in a moment.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
templates/script.ts

index 8039a000b6f75693d4f24cb605bd92faa715c7c5..454a992184fd795bbf23adfe3d1298b0e125a17d 100644 (file)
@@ -312,27 +312,38 @@ function pinned_message_for_log(p: PieceInfo): string {
 function recompute_keybindings() {
   uo_map = Object.create(null);
   let all_targets = [];
+
+  // Types here are a little messy
+  function prep_add_uo(uo: UoDescription)
+  : null | { targets: PieceId[] | null }
+  {
+    let currently = uo_map[uo.def_key];
+    if (currently === null) return null;
+    if (currently !== undefined) {
+      if (currently.opname != uo.opname) {
+       uo_map[uo.def_key] = null;
+       return null;
+      }
+    } else {
+      currently = {
+       targets: [],
+       ...uo
+      };
+      uo_map[uo.def_key] = currently;
+    }
+    currently.desc = currently.desc < uo.desc ? currently.desc : uo.desc;
+    return currently as unknown as any;
+  };
+  
   for (let piece of Object.keys(pieces)) {
     let p = pieces[piece];
     if (p.held != us) continue;
     all_targets.push(piece);
     for (var uo of p.uos) {
-      let currently = uo_map[uo.def_key];
-      if (currently === null) continue;
-      if (currently !== undefined) {
-       if (currently.opname != uo.opname) {
-         uo_map[uo.def_key] = null;
-         continue;
-       }
-      } else {
-       currently = {
-         targets: [],
-         ...uo
-       };
-       uo_map[uo.def_key] = currently;
+      let currently = prep_add_uo(uo);
+      if (currently) {
+       currently.targets!.push(piece);
       }
-      currently.desc = currently.desc < uo.desc ? currently.desc : uo.desc;
-      currently.targets!.push(piece);
     }
   }
   all_targets.sort(pieceid_z_cmp);