fix(embedded): Sanitize like we validate package names

This commit is contained in:
Ed Page 2023-06-12 14:31:44 -05:00
parent 5fd3d2d230
commit 8186282f28

View File

@ -86,22 +86,22 @@ pub fn validate_package_name(name: &str, what: &str, help: &str) -> CargoResult<
/// Ensure a package name is [valid][validate_package_name] /// Ensure a package name is [valid][validate_package_name]
pub fn sanitize_package_name(name: &str, placeholder: char) -> String { pub fn sanitize_package_name(name: &str, placeholder: char) -> String {
let mut slug = String::new(); let mut slug = String::new();
for (i, c) in name.chars().enumerate() { let mut chars = name.chars();
match (i, c) { if let Some(ch) = chars.next() {
(0, '0'..='9') => { if ch.is_digit(10) {
slug.push(placeholder); slug.push(placeholder);
slug.push(c); slug.push(ch);
} } else if unicode_xid::UnicodeXID::is_xid_start(ch) || ch == '_' {
(_, '0'..='9') | (_, 'a'..='z') | (_, '_') | (_, '-') => { slug.push(ch);
slug.push(c); } else {
} slug.push(placeholder);
(_, 'A'..='Z') => { }
// Convert uppercase characters to lowercase to avoid `non_snake_case` warnings. }
slug.push(c.to_ascii_lowercase()); for ch in chars {
} if unicode_xid::UnicodeXID::is_xid_continue(ch) || ch == '-' {
(_, _) => { slug.push(ch);
slug.push(placeholder); } else {
} slug.push(placeholder);
} }
} }
slug slug