chiark / gitweb /
dice: Refactor describe_html to prep for desc
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 24 Apr 2022 15:40:29 +0000 (16:40 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 24 Apr 2022 15:45:14 +0000 (16:45 +0100)
Break out showing so that we don't have combinatorical description
formats.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/dice.rs

index 76fb300a0a6b74c3d5b0199c2366d88afd91b3ab..9f9dd61cfecaebc48137aab577c2ff374b11cb0b 100644 (file)
@@ -326,16 +326,19 @@ impl PieceTrait for Die {
   #[throws(IE)]
   fn describe_html(&self, gpc: &GPiece, _: &GameOccults) -> Html {
     let nfaces = self.nfaces();
-    let label = &self.labels[gpc.face];
-    let idesc = || self.image.describe_html(gpc.face);
-    let ldesc = || Html::from_txt(label);
-    if label == "" {
-      hformat!("a d{} (now showing {})", nfaces, idesc()?)
-    } else if self.labels.iter().filter(|&l| l == label).count() == 1 {
-      hformat!("a d{} (now showing {})", nfaces, ldesc())
-    } else {
-      hformat!("a d{} (now showing {}, {})", nfaces, idesc()?, ldesc())
-    }
+    let showing = {
+      let label = &self.labels[gpc.face];
+      let idesc = || self.image.describe_html(gpc.face);
+      let ldesc = || Html::from_txt(label);
+      if label == "" {
+        hformat!("now showing {}", idesc()?)
+      } else if self.labels.iter().filter(|&l| l == label).count() == 1 {
+        hformat!("now showing {}", ldesc())
+      } else {
+        hformat!("now showing {}, {}", idesc()?, ldesc())
+      }
+    };
+    hformat!("a d{} ({})", nfaces, showing)
   }
 
   #[throws(ApiPieceOpError)]