summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cli.rs7
-rw-r--r--src/config/input.rs2
-rw-r--r--src/repl/mod.rs16
3 files changed, 14 insertions, 11 deletions
diff --git a/src/cli.rs b/src/cli.rs
index c3af5cc..2de6113 100644
--- a/src/cli.rs
+++ b/src/cli.rs
@@ -73,12 +73,7 @@ pub struct Cli {
impl Cli {
pub fn text(&self) -> Option<String> {
- let text = self
- .text
- .iter()
- .map(|x| x.trim().to_string())
- .collect::<Vec<String>>()
- .join(" ");
+ let text = self.text.to_vec().join(" ");
if text.is_empty() {
return None;
}
diff --git a/src/config/input.rs b/src/config/input.rs
index 42bb8ec..591eb67 100644
--- a/src/config/input.rs
+++ b/src/config/input.rs
@@ -91,7 +91,7 @@ impl Input {
}
for (path, contents) in files {
texts.push(format!(
- "============ PATH: {path} ============\n\n{contents}\n"
+ "============ PATH: {path} ============\n{contents}\n"
));
}
let (role, with_session, with_agent) = resolve_role(&config.read(), role);
diff --git a/src/repl/mod.rs b/src/repl/mod.rs
index cdca146..ff12331 100644
--- a/src/repl/mod.rs
+++ b/src/repl/mod.rs
@@ -280,7 +280,7 @@ impl Repl {
Some(args) => match args.split_once(['\n', ' ']) {
Some((name, text)) => {
let role = self.config.read().retrieve_role(name.trim())?;
- let input = Input::from_str(&self.config, text.trim(), Some(role));
+ let input = Input::from_str(&self.config, text, Some(role));
ask(&self.config, self.abort_signal.clone(), input, false).await?;
}
None => {
@@ -718,8 +718,9 @@ fn split_files_text(line: &str, is_win: bool) -> (Vec<String>, &str) {
word.to_string()
}
};
+ let chars: Vec<char> = line.chars().collect();
- for (i, char) in line.chars().enumerate() {
+ for (i, char) in chars.iter().cloned().enumerate() {
match unbalance {
Some(ub_char) if ub_char == char => {
word.push(char);
@@ -730,12 +731,15 @@ fn split_files_text(line: &str, is_win: bool) -> (Vec<String>, &str) {
}
None => match char {
' ' | '\t' | '\r' | '\n' => {
+ if char == '\r' && chars.get(i + 1) == Some(&'\n') {
+ continue;
+ }
if let Some('\\') = prev_char.filter(|_| !is_win) {
word.push(char);
} else if !word.is_empty() {
if word == "--" {
word.clear();
- text_starts_at = Some(i);
+ text_starts_at = Some(i + 1);
break;
}
words.push(unquote_word(&word));
@@ -763,7 +767,7 @@ fn split_files_text(line: &str, is_win: bool) -> (Vec<String>, &str) {
words.push(unquote_word(&word));
}
let text = match text_starts_at {
- Some(start) => line[start..].trim(),
+ Some(start) => &line[start..],
None => "",
};
@@ -808,6 +812,10 @@ mod tests {
(vec!["file.txt".into()], "hello")
);
assert_eq!(
+ split_files_text("file.txt -- \thello", false),
+ (vec!["file.txt".into()], "\thello")
+ );
+ assert_eq!(
split_files_text("file.txt --\nhello", false),
(vec!["file.txt".into()], "hello")
);