diff options
| author | sigoden <sigoden@gmail.com> | 2024-02-22 11:39:22 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-22 11:39:22 +0800 |
| commit | 6c0204e6965bf13c3d883ea5fa65d52415acd530 (patch) | |
| tree | 84d0dfc33e8802c09eb75e084fc1615c3f70fb52 /src/config/input.rs | |
| parent | 373b34ef5c501904856d8e6e1ca3db2db1dc4461 (diff) | |
| download | aichat-6c0204e6965bf13c3d883ea5fa65d52415acd530.tar.gz | |
refactor: change header of messages saved to markdown (#317)
Diffstat (limited to 'src/config/input.rs')
| -rw-r--r-- | src/config/input.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/config/input.rs b/src/config/input.rs index c3e0de3..6fa1b1c 100644 --- a/src/config/input.rs +++ b/src/config/input.rs @@ -12,6 +12,7 @@ use std::{ io::Read, path::{Path, PathBuf}, }; +use unicode_width::{UnicodeWidthChar, UnicodeWidthStr}; const IMAGE_EXTS: [&str; 5] = ["png", "jpeg", "jpg", "webp", "gif"]; @@ -78,6 +79,25 @@ impl Input { self.data_urls.clone() } + pub fn summary(&self) -> String { + let text = &self.text; + if text.width_cjk() > 70 { + let mut sum_width = 0; + let mut chars = vec![]; + for c in text.chars() { + sum_width += c.width_cjk().unwrap_or(1); + if sum_width > 67 { + chars.extend(['.', '.', '.']); + break; + } + chars.push(c); + } + chars.into_iter().collect() + } else { + text.clone() + } + } + pub fn render(&self) -> String { if self.medias.is_empty() { return self.text.clone(); |
