Mercurial > public > mercurial-scm > hg
annotate rust/hg-core/src/utils/strings.rs @ 52759:36d39726c0af
rust: add utils::strings module
This is intended for code similar to stringutil.py. This commit adds one method,
short_user, which will be needed for rhg annotate.
author | Mitchell Kember <mkember@janestreet.com> |
---|---|
date | Fri, 03 Jan 2025 10:50:17 -0500 |
parents | |
children | 94e2547e6f3d |
rev | line source |
---|---|
52759
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
1 /// Returns a short representation of a user name or email address. |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
2 pub fn short_user(user: &[u8]) -> &[u8] { |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
3 let mut str = user; |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
4 if let Some(i) = memchr::memchr(b'@', str) { |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
5 str = &str[..i]; |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
6 } |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
7 if let Some(i) = memchr::memchr(b'<', str) { |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
8 str = &str[i + 1..]; |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
9 } |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
10 if let Some(i) = memchr::memchr(b' ', str) { |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
11 str = &str[..i]; |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
12 } |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
13 if let Some(i) = memchr::memchr(b'.', str) { |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
14 str = &str[..i]; |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
15 } |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
16 str |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
17 } |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
18 |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
19 #[cfg(test)] |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
20 mod tests { |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
21 use super::*; |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
22 |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
23 #[test] |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
24 fn test_short_user() { |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
25 assert_eq!(short_user(b""), b""); |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
26 assert_eq!(short_user(b"Name"), b"Name"); |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
27 assert_eq!(short_user(b"First Last"), b"First"); |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
28 assert_eq!(short_user(b"First Last <user@example.com>"), b"user"); |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
29 assert_eq!(short_user(b"First Last <user.name@example.com>"), b"user"); |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
30 } |
36d39726c0af
rust: add utils::strings module
Mitchell Kember <mkember@janestreet.com>
parents:
diff
changeset
|
31 } |