Hrm, maybe this should have been load() ? This will do for now.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
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) };
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::*;
}
}
+ #[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)]