summaryrefslogtreecommitdiffstats
path: root/src/render/cmd.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2023-11-02 09:53:54 +0800
committerGitHub <noreply@github.com>2023-11-02 09:53:54 +0800
commit444f4ebe9de8aa68afdf8d39b734a8543b9b5c4b (patch)
treed8b0e16faa0270fda2a6c7afa5fe18c1970b9a93 /src/render/cmd.rs
parent5c7bfd92ff3e557477969be9db0638ef0d3d3659 (diff)
downloadaichat-444f4ebe9de8aa68afdf8d39b734a8543b9b5c4b.tar.gz
refactor: improve code quanity (#196)
- rewrite Repl, remove ReplHandler - move ReplyStreamHandler to repl/ and rename it to ReplyHandler - deprecate utils::print_now - refactor session info
Diffstat (limited to 'src/render/cmd.rs')
-rw-r--r--src/render/cmd.rs19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/render/cmd.rs b/src/render/cmd.rs
index 115170b..e09bd71 100644
--- a/src/render/cmd.rs
+++ b/src/render/cmd.rs
@@ -1,7 +1,6 @@
-use super::MarkdownRender;
+use super::{MarkdownRender, ReplyEvent};
-use crate::print_now;
-use crate::repl::{ReplyStreamEvent, SharedAbortSignal};
+use crate::repl::AbortSignal;
use crate::utils::{spaces, split_line_sematic, split_line_tail};
use anyhow::Result;
@@ -9,9 +8,9 @@ use crossbeam::channel::Receiver;
use textwrap::core::display_width;
pub fn cmd_render_stream(
- rx: &Receiver<ReplyStreamEvent>,
+ rx: &Receiver<ReplyEvent>,
render: &mut MarkdownRender,
- abort: &SharedAbortSignal,
+ abort: &AbortSignal,
) -> Result<()> {
let mut buffer = String::new();
let mut col = 0;
@@ -21,14 +20,14 @@ pub fn cmd_render_stream(
}
if let Ok(evt) = rx.try_recv() {
match evt {
- ReplyStreamEvent::Text(text) => {
+ ReplyEvent::Text(text) => {
if text.contains('\n') {
let text = format!("{buffer}{text}");
let (head, tail) = split_line_tail(&text);
buffer = tail.to_string();
let input = format!("{}{head}", spaces(col));
let output = render.render(&input);
- print_now!("{}\n", &output[col..]);
+ println!("{}", &output[col..]);
col = 0;
} else {
buffer = format!("{buffer}{text}");
@@ -51,14 +50,14 @@ pub fn cmd_render_stream(
col += display_width(output);
}
}
- print_now!("{}", output);
+ print!("{}", output);
}
}
}
}
- ReplyStreamEvent::Done => {
+ ReplyEvent::Done => {
let input = format!("{}{buffer}", spaces(col));
- print_now!("{}\n", render.render(&input));
+ println!("{}", render.render(&input));
break;
}
}