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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }