chiark / gitweb /
hand generalisation: wip use Sort
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 30 Mar 2021 19:41:47 +0000 (20:41 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 30 Mar 2021 19:41:47 +0000 (20:41 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
apitest/at-otter.rs
src/hand.rs

index 4b8e37febca8dd7415d71f9cd3135ba91e9a37d3..06c5ed7c71560415364935104f5513afc66b5a5c 100644 (file)
@@ -538,7 +538,7 @@ impl Ctx {
 
     let [hand] = a_pieces.iter_enumerated()
       .filter(|(_i,p)| {
-        p.info["desc"] == otter::hand::UNCLAIMED_DESC.as_html_str()
+        p.info["desc"] == otter::hand::UNCLAIMED_HAND_DESC
       })
       .map(|(i,_)| i)
       .collect::<ArrayVec<[_;1]>>()
index 53f7c1c1556f01db38437922da5fa84fdbb199ed..41ed2a34458b4e1ad4644684b2ccc11b4a553cd4 100644 (file)
@@ -4,7 +4,7 @@
 
 use crate::prelude::*;
 
-pub const UNCLAIMED_DESC: HtmlLit = Html::lit("a hand repository");
+pub const UNCLAIMED_HAND_DESC: &'static str = "a hand repository";
 
 #[derive(Debug,Clone,Serialize,Deserialize)]
 struct MagicOwner {
@@ -35,6 +35,9 @@ impl Sort {
   fn itemname(self) -> &'static str { use Sort::*; match self {
     Hand => "magic-hand",
   } }
+  fn unclaimed_desc(self) -> HtmlLit { use Sort::*; Html::lit(match self {
+    Hand => UNCLAIMED_HAND_DESC,
+  }) }
 }
 
 impl HandState {
@@ -95,13 +98,13 @@ impl PieceSpec for piece_specs::Hand {
   }
 }
 
-impl Hand {
-  fn describe_html_inner(&self, xdata: Option<&HandState>) -> Html {
+impl Sort {
+  fn describe_html_inner(self, xdata: Option<&HandState>) -> Html {
     if_chain! {
       if let Some(xdata) = xdata;
       if let Some(owner) = &xdata.owner;
       then { owner.desc.clone() }
-      else { UNCLAIMED_DESC.into() }
+      else { self.unclaimed_desc().into() }
     }
   }
 }
@@ -140,7 +143,7 @@ impl PieceTrait for Hand {
   #[throws(IE)]
   fn describe_html(&self, gpc: &GPiece, _goccults: &GameOccults) -> Html {
     let xdata = gpc.xdata.get()?;
-    self.describe_html_inner(xdata)
+    self.sort.describe_html_inner(xdata)
   }
 
   delegate!{
@@ -185,7 +188,7 @@ impl PieceTrait for Hand {
     let gpc = gpieces.byid_mut(piece)?;
     let xdata = gpc.xdata.get_mut::<HandState,_>(default)
       .map_err(|e| APOE::ReportViaResponse(e.into()))?;
-    let old_desc = self.describe_html_inner(Some(xdata));
+    let old_desc = self.sort.describe_html_inner(Some(xdata));
     let old_player = xdata.player();
 
     let dasharray = player_dasharray(gplayers, player);