mirror of
https://github.com/gitui-org/gitui
synced 2026-05-24 09:28:21 +00:00
migrate some more to unicode-truncate crate
This commit is contained in:
parent
36b8ca65d4
commit
dcc01fb80e
4 changed files with 9 additions and 28 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
|
@ -54,6 +54,7 @@ dependencies = [
|
||||||
"serial_test",
|
"serial_test",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
|
"unicode-truncate",
|
||||||
"url",
|
"url",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -1177,7 +1178,8 @@ checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796"
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-truncate"
|
name = "unicode-truncate"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
source = "git+https://github.com/Aetf/unicode-truncate.git#b1821b0af6801b81e1f1f900526748754f8cd44f"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a04be5ca5f7a4a7270ffea82bc41c59b87c611ed04f20e77c338e8d3c2348e42"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-width",
|
"unicode-width",
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ serde = "1.0"
|
||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
unicode-width = "0.1"
|
unicode-width = "0.1"
|
||||||
textwrap = "0.13"
|
textwrap = "0.13"
|
||||||
unicode-truncate = {version="0.2", git="https://github.com/Aetf/unicode-truncate.git"}
|
unicode-truncate = "0.2.0"
|
||||||
|
|
||||||
[target.'cfg(all(target_family="unix",not(target_os="macos")))'.dependencies]
|
[target.'cfg(all(target_family="unix",not(target_os="macos")))'.dependencies]
|
||||||
which = "4.0"
|
which = "4.0"
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ crossbeam-channel = "0.5"
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
thiserror = "1.0"
|
thiserror = "1.0"
|
||||||
url = "2.2"
|
url = "2.2"
|
||||||
|
unicode-truncate = "0.2.0"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tempfile = "3.2"
|
tempfile = "3.2"
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ use super::utils::repo;
|
||||||
use crate::error::Result;
|
use crate::error::Result;
|
||||||
use git2::{Commit, Error, Oid};
|
use git2::{Commit, Error, Oid};
|
||||||
use scopetime::scope_time;
|
use scopetime::scope_time;
|
||||||
|
use unicode_truncate::UnicodeTruncateStr;
|
||||||
|
|
||||||
/// identifies a single commit
|
/// identifies a single commit
|
||||||
#[derive(
|
#[derive(
|
||||||
|
|
@ -99,32 +100,18 @@ pub fn get_message(
|
||||||
message_length_limit: Option<usize>,
|
message_length_limit: Option<usize>,
|
||||||
) -> String {
|
) -> String {
|
||||||
let msg = String::from_utf8_lossy(c.message_bytes());
|
let msg = String::from_utf8_lossy(c.message_bytes());
|
||||||
let msg = msg.trim_start();
|
let msg = msg.trim();
|
||||||
|
|
||||||
if let Some(limit) = message_length_limit {
|
if let Some(limit) = message_length_limit {
|
||||||
limit_str(msg, limit).to_string()
|
msg.unicode_truncate(limit).0.to_string()
|
||||||
} else {
|
} else {
|
||||||
msg.to_string()
|
msg.to_string()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
|
||||||
fn limit_str(s: &str, limit: usize) -> &str {
|
|
||||||
if let Some(first) = s.lines().next() {
|
|
||||||
let mut limit = limit.min(first.len());
|
|
||||||
while !first.is_char_boundary(limit) {
|
|
||||||
limit += 1
|
|
||||||
}
|
|
||||||
&first[0..limit]
|
|
||||||
} else {
|
|
||||||
""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
use super::get_commits_info;
|
||||||
use super::{get_commits_info, limit_str};
|
|
||||||
use crate::error::Result;
|
use crate::error::Result;
|
||||||
use crate::sync::{
|
use crate::sync::{
|
||||||
commit, stage_add_file, tests::repo_init_empty,
|
commit, stage_add_file, tests::repo_init_empty,
|
||||||
|
|
@ -183,13 +170,4 @@ mod tests {
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_limit_string_utf8() {
|
|
||||||
assert_eq!(limit_str("里里", 1), "里");
|
|
||||||
|
|
||||||
let test_src = "导入按钮由选文件改为选目录,因为整个过程中要用到多个mdb文件,这些文件是在程序里写死的,暂且这么来做,有时间了后 再做调整";
|
|
||||||
let test_dst = "导入按钮由选文";
|
|
||||||
assert_eq!(limit_str(test_src, 20), test_dst);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue