chiark / gitweb /
currency: Break out render
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 19 May 2022 19:24:57 +0000 (20:24 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 19 May 2022 19:25:14 +0000 (20:25 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/currency.rs

index 3205011548e8452a1001aa37fd4323eec9d67fc1..b75460c24850f1094bbe274d71fbe23ed3a5f3fd 100644 (file)
@@ -120,14 +120,8 @@ impl PieceTrait for Banknote {
   #[throws(IE)]
   fn svg_piece(&self, f: &mut Html, gpc: &GPiece, _gs: &GameState,
                vpid: VisiblePieceId) {
-    self.image.svg(f, vpid, gpc.face, &gpc.xdata)?;
-    
     let value: &Value = gpc.xdata.get_exp()?;
-
-    hwrite!(f,
-            r##"<{}>{}<tspan font-size="{}">{}</tspan></text>"##,
-            &self.label_options.start_element(), value.qty,
-            &self.unit_size, &self.currency)?;
+    self.render(f, vpid, gpc.face, &gpc.xdata, &hformat!("{}", value.qty))?;
   }
 
   #[throws(ApiPieceOpError)]
@@ -289,3 +283,16 @@ impl PieceTrait for Banknote {
   })()) // <- no ?
   }))}
 }
+
+impl Banknote {
+  #[throws(IE)]
+  fn render(&self, f: &mut Html, vpid: VisiblePieceId, face: FaceId,
+            xdata_for_image_only: &PieceXDataState, qty: &HtmlStr) {
+    self.image.svg(f, vpid, face, xdata_for_image_only)?;
+
+    hwrite!(f,
+            r##"<{}>{}<tspan font-size="{}">{}</tspan></text>"##,
+            &self.label_options.start_element(), qty,
+            &self.unit_size, &self.currency)?;
+  }
+}