From 122c26b8b05f5ed0d7e113d999466aa3f8df7948 Mon Sep 17 00:00:00 2001 From: Ferran Basora Date: Sun, 3 May 2020 15:31:18 +0000 Subject: [PATCH] Fix issue with multi selection --- src/main.rs | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/src/main.rs b/src/main.rs index 0b37a03..b8e3395 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,6 +8,7 @@ mod view; use self::clap::{App, Arg}; use clap::crate_version; +use std::fs::OpenOptions; use std::io::prelude::*; use std::io::{self, Read}; @@ -167,24 +168,31 @@ fn main() { }; if !selected.is_empty() { - for (text, upcase) in selected.iter() { - let mut output = format.to_string(); - let break_line = if multi { "\n" } else { "" }; + let output = selected + .iter() + .map(|(text, upcase)| { + let upcase_value = if *upcase { "true" } else { "false" }; - let upcase_value = if *upcase { "true" } else { "false" }; + let mut output = format.to_string(); - output = str::replace(&output, "%U", upcase_value); - output = str::replace(&output, "%H", text.as_str()); + output = str::replace(&output, "%U", upcase_value); + output = str::replace(&output, "%H", text.as_str()); + output + }) + .collect::>() + .join("\n"); - let output = format!("{}{}", output, break_line); + if target.is_empty() { + print!("{}", output); + } else { + let mut file = OpenOptions::new() + .create(true) + .truncate(true) + .write(true) + .open(target) + .expect("Unable to open the target file"); - if target.is_empty() { - print!("{}", output); - } else { - let mut file = std::fs::File::create(target).expect("Unable to open the target file"); - - file.write(output.as_bytes()).unwrap(); - } + file.write(output.as_bytes()).unwrap(); } } else { ::std::process::exit(1);