mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-10-25 04:54:07 +00:00
Enhance experience name sanitization in CloneCommand
- Updated the `sanitize_name` function to remove noise words, specifically "testing", from experience names. - Added unit tests to verify the removal of "testing" in various input scenarios, ensuring consistent sanitization of folder names.
This commit is contained in:
parent
113b8b8dfe
commit
8dc050895a
1 changed files with 11 additions and 2 deletions
|
|
@ -168,8 +168,9 @@ fn fetch_experience_name(place_id: u64) -> anyhow::Result<String> {
|
||||||
/// Sanitize a Roblox experience name into a valid folder name.
|
/// Sanitize a Roblox experience name into a valid folder name.
|
||||||
///
|
///
|
||||||
/// 1. Strip `[...]` and `(...)` sections
|
/// 1. Strip `[...]` and `(...)` sections
|
||||||
/// 2. Keep only ASCII alphanumeric and spaces
|
/// 2. Remove noise words (e.g. "testing")
|
||||||
/// 3. Collapse whitespace, lowercase, join with hyphens
|
/// 3. Keep only ASCII alphanumeric and spaces
|
||||||
|
/// 4. Collapse whitespace, lowercase, join with hyphens
|
||||||
fn sanitize_name(name: &str) -> String {
|
fn sanitize_name(name: &str) -> String {
|
||||||
// Remove [...] and (...) sections (handles nesting)
|
// Remove [...] and (...) sections (handles nesting)
|
||||||
let mut cleaned = String::with_capacity(name.len());
|
let mut cleaned = String::with_capacity(name.len());
|
||||||
|
|
@ -192,6 +193,7 @@ fn sanitize_name(name: &str) -> String {
|
||||||
.split(|c: char| !(c.is_ascii_alphanumeric() || c == ' '))
|
.split(|c: char| !(c.is_ascii_alphanumeric() || c == ' '))
|
||||||
.collect::<String>()
|
.collect::<String>()
|
||||||
.split_whitespace()
|
.split_whitespace()
|
||||||
|
.filter(|w| !w.eq_ignore_ascii_case("testing"))
|
||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
.join("-")
|
.join("-")
|
||||||
.to_lowercase()
|
.to_lowercase()
|
||||||
|
|
@ -231,4 +233,11 @@ mod tests {
|
||||||
fn sanitize_only_special_chars() {
|
fn sanitize_only_special_chars() {
|
||||||
assert_eq!(sanitize_name("🎮🌊⚡"), "");
|
assert_eq!(sanitize_name("🎮🌊⚡"), "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn sanitize_removes_testing() {
|
||||||
|
assert_eq!(sanitize_name("My Game Testing"), "my-game");
|
||||||
|
assert_eq!(sanitize_name("TESTING My Game"), "my-game");
|
||||||
|
assert_eq!(sanitize_name("My testing Game"), "my-game");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue