chiark / gitweb /
Break out ColourSpecExt::resolve
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 17 May 2022 01:10:36 +0000 (02:10 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 17 May 2022 01:10:36 +0000 (02:10 +0100)
Hrm, maybe this should have been load() ?  This will do for now.

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

index ede7a2b87a3fb44ce66e64f529639c562548085f..cf9df81fd25d7fd3c4a768bf48893323728883a6 100644 (file)
@@ -157,9 +157,7 @@ impl PieceSpec for Spec {
       index_vec!["".into()]
     };
 
-    let label_colour: Colour = self.label.colour.as_ref()
-      .map(TryInto::try_into).transpose()?
-      .unwrap_or_else(|| Html::lit("black").into());
+    let label_colour = self.label.colour.resolve()?;
 
     if_let!{ Some((nfaces,_)) = nfaces;
              else throw!(SpecError::MultipleFacesRequired) };
index 7c8f9d5b07884682a0894adae419bd4da531fa29..062f51e096cf9ab888f90c9cbdcf1a1a4d4e8758 100644 (file)
@@ -103,6 +103,7 @@ pub use crate::shapelib;
 pub use crate::shapelib::{ItemEnquiryData, LibraryEnquiryData};
 pub use crate::shapelib::{LibraryLoadError};
 pub use crate::spec::*;
+pub use crate::spec::imp::ColourSpecExt as _;
 pub use crate::spec::piece_specs::{FaceColourSpecs, SimpleCommon};
 pub use crate::updates::*;
 pub use crate::utils::*;
index 31e4eff0d5e83885143a17aeb65bdb8bc5e5f512..8e00709a36c9f3e7ac90d87414fcef6a3023f1cd 100644 (file)
@@ -606,6 +606,16 @@ pub mod imp {
     }
   }
 
+  #[ext(pub, name=ColourSpecExt)]
+  impl Option<ColourSpec> {
+    #[throws(UnsupportedColourSpec)]
+    fn resolve(&self) -> Colour {
+      self.as_ref()
+        .map(TryInto::try_into).transpose()?
+        .unwrap_or_else(|| Html::lit("black").into())
+    }
+  }
+
   impl TryFrom<&ColourSpec> for Colour {
     type Error = UnsupportedColourSpec;
     #[throws(UnsupportedColourSpec)]