about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorStéphane Campinas <stephane.campinas@gmail.com>2018-10-04 09:16:08 +0200
committerStéphane Campinas <stephane.campinas@gmail.com>2018-10-08 14:48:13 +0200
commitf46082fbd8e5c347d018dd1889181fef2015c4bd (patch)
treeea37c4ee69f73574184bc047edd4b7bcbf0f471e /src
parent1b2e72726f2e395578d4713f75743761677b6a4e (diff)
rewrite_string: trim trailing whitespace in case the last_line fits in the given shape
Diffstat (limited to 'src')
-rw-r--r--src/string.rs22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/string.rs b/src/string.rs
index 6f84a8e2c02..b5ba022a93c 100644
--- a/src/string.rs
+++ b/src/string.rs
@@ -98,7 +98,12 @@ pub fn rewrite_string<'a>(orig: &str, fmt: &StringFormat<'a>) -> Option<String>
     loop {
         // All the input starting at cur_start fits on the current line
         if graphemes.len() - cur_start <= cur_max_chars {
-            result.push_str(&graphemes[cur_start..].join(""));
+            let last_line = graphemes[cur_start..].join("");
+            if fmt.trim_end {
+                result.push_str(&last_line.trim_right());
+            } else {
+                result.push_str(&last_line);
+            }
             break;
         }
 
@@ -363,4 +368,19 @@ mod test {
             Some("\"Nulla\nconsequat erat at massa. \\\n Vivamus id mi.\"".to_string())
         );
     }
+
+    #[test]
+    fn last_line_fit_with_trailing_whitespaces() {
+        let string = "Vivamus id mi.  ";
+        let config: Config = Default::default();
+        let mut fmt = StringFormat::new(Shape::legacy(25, Indent::empty()), &config);
+
+        fmt.trim_end = true;
+        let rewritten_string = rewrite_string(string, &fmt);
+        assert_eq!(rewritten_string, Some("\"Vivamus id mi.\"".to_string()));
+
+        fmt.trim_end = false; // default value of trim_end
+        let rewritten_string = rewrite_string(string, &fmt);
+        assert_eq!(rewritten_string, Some("\"Vivamus id mi.  \"".to_string()));
+    }
 }