chiark / gitweb /
shapelib: subst: remove whitespace next to empty replacements
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 11 Mar 2021 14:52:23 +0000 (14:52 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 11 Mar 2021 14:52:52 +0000 (14:52 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/shapelib.rs

index 3e733ea81afed4316b7174b8e5dff36a5dd08b4f..0f98600090dcc3321365925542f5aa4bf0bf7a48 100644 (file)
@@ -357,9 +357,20 @@ fn load_catalogue(libname: &str, dirname: &str, toml_path: &str) -> Contents {
         if matches.next().is_some() {
           Err(LLE::RepeatedSubstituionToken(needle))?;
         }
-        before[0.. m1.0].to_owned()
+        let mut lhs = &before[0.. m1.0];
+        let mut rhs = &before[m1.0 + m1.1.len() ..];
+        if replacement.is_empty() {
+          let lhs_trimmed = lhs.trim_end();
+          if lhs_trimmed.len() != lhs.len() {
+            lhs = lhs_trimmed;
+          } else {
+            rhs = rhs.trim_start();
+          } 
+        }
+        lhs
+          .to_owned()
           + replacement
-          + &before[m1.0 + m1.1.len() ..]
+          + rhs
       }
 
       let mut add1 = |item_name: &str, desc| {