From: Ian Jackson Date: Thu, 11 Mar 2021 15:02:30 +0000 (+0000) Subject: shapelib hidden: Include occ info in ItemData X-Git-Tag: otter-0.4.0~176 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=ef266e3f1eb7a447e6e45fa9fdeaebeef8e0aa1d;p=otter.git shapelib hidden: Include occ info in ItemData Nothing uses this yet Signed-off-by: Ian Jackson --- diff --git a/src/shapelib.rs b/src/shapelib.rs index 6f9d1eda..7b3b6264 100644 --- a/src/shapelib.rs +++ b/src/shapelib.rs @@ -46,6 +46,13 @@ struct ItemDetails { struct ItemData { d: Arc, group: Arc, + occ: Option>, +} + +#[derive(Debug,Clone)] +struct OccData { + item_name: String, + desc: Html, } #[derive(Error,Debug)] @@ -63,6 +70,8 @@ pub enum LibraryLoadError { #[error("glob pattern {pat:?} matched filename with no extension {path:?}")] GlobNoExtension { pat: String, path: String }, #[error("{:?}",&self)] + OccultationColourMissing(String), + #[error("{:?}",&self)] ExpectedTable(String), #[error("{:?}",&self)] ExpectedString(String), @@ -376,9 +385,23 @@ fn load_catalogue(libname: &str, dirname: &str, toml_path: &str) -> Contents { let item_name = format!("{}{}{}", gdefn.item_prefix, fe.item_spec, gdefn.item_suffix); + let occ = match &group.d.occulted { + None => None, + Some(OccultationMethod::ByColour { colour }) => { + if ! group.d.colours.contains_key(colour.as_str()) { + throw!(LLE::OccultationColourMissing(colour.clone())); + } + Some(Arc::new(OccData { + item_name: subst(&item_name, "_c", &colour)?, + desc: Html(subst(&fe.desc.0, "_colour", "")?), + })) + }, + }; + let mut add1 = |item_name: &str, desc| { let idata = ItemData { group: group.clone(), + occ: occ.clone(), d: Arc::new(ItemDetails { desc }), }; type H<'e,X,Y> = hash_map::Entry<'e,X,Y>;