From f52210aef261eda550a562277e2bbb79863849c4 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 17 May 2022 02:10:36 +0100 Subject: [PATCH] Break out ColourSpecExt::resolve Hrm, maybe this should have been load() ? This will do for now. Signed-off-by: Ian Jackson --- src/dice.rs | 4 +--- src/imports.rs | 1 + src/spec.rs | 10 ++++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/dice.rs b/src/dice.rs index ede7a2b8..cf9df81f 100644 --- a/src/dice.rs +++ b/src/dice.rs @@ -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) }; diff --git a/src/imports.rs b/src/imports.rs index 7c8f9d5b..062f51e0 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -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::*; diff --git a/src/spec.rs b/src/spec.rs index 31e4eff0..8e00709a 100644 --- a/src/spec.rs +++ b/src/spec.rs @@ -606,6 +606,16 @@ pub mod imp { } } + #[ext(pub, name=ColourSpecExt)] + impl Option { + #[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)] -- 2.30.2