From f91a24aba243df7a056bad8f5c50e66afe6074a9 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 10 Jan 2021 12:06:02 +0000 Subject: [PATCH] shapelib: Allow colours = { } Option<> is bad because we can't override to absent. And the Perl code in media-scraper already treats an empty colours array as no recolouring. Do that here too. Signed-off-by: Ian Jackson --- src/shapelib.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/shapelib.rs b/src/shapelib.rs index 45c934a5..54fea79a 100644 --- a/src/shapelib.rs +++ b/src/shapelib.rs @@ -41,7 +41,7 @@ struct GroupDetails { #[serde(default)] centre: [f64; 2], #[serde(default)] flip: bool, #[serde(default="num_traits::identities::One::one")] scale: f64, - colours: Option>, + #[serde(default)] colours: HashMap, #[serde(flatten)] outline: Box, } @@ -399,7 +399,10 @@ fn load_catalogue(libname: &str, dirname: &str, toml_path: &str) -> Contents { let item_name = format!("{}{}{}", gdefn.item_prefix, fe.item_spec, gdefn.item_suffix); - if let Some(colours) = &group.d.colours { + if group.d.colours.is_empty() { + add1(&item_name, fe.desc.clone())?; + } else { + #[throws(LLE)] fn subst(before: &str, needle: &'static str, replacement: &str) -> String { @@ -413,13 +416,13 @@ fn load_catalogue(libname: &str, dirname: &str, toml_path: &str) -> Contents { + replacement + &before[m1.0 + m1.1.len() ..] } - for (colour, recolourdata) in colours { + + for (colour, recolourdata) in &group.d.colours { let t_item_name = subst(&item_name, "_c", &recolourdata.abbrev)?; let t_desc = Html(subst(&fe.desc.0, "_colour", colour)?); add1(&t_item_name, t_desc)?; } - } else { - add1(&item_name, fe.desc.clone())?; + } } } -- 2.30.2