Skip to content

Commit 42c0dad

Browse files
committed
Use regex to replace symbols
1 parent b2cf6eb commit 42c0dad

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

src/generate/device.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::svd::{array::names, Device, Peripheral};
22
use proc_macro2::{Span, TokenStream};
33
use quote::{quote, ToTokens};
4+
use regex::Regex;
45
use syn::Ident;
56

67
use log::debug;
@@ -273,12 +274,10 @@ pub fn render(d: &Device, config: &Config, device_x: &mut String) -> Result<Toke
273274

274275
// Generate unique identifier to prevent linkage errors when using multiple devices.
275276
let mut id = String::from("TAKEN_");
276-
for ch in d.name.chars() {
277-
if ch == ' ' || ch == '-' {
278-
id.push('_');
279-
} else {
280-
id.extend(ch.to_uppercase());
281-
}
277+
let re = Regex::new(r"[^A-Za-z0-9_]").unwrap();
278+
let result = re.replace_all(&d.name, "_");
279+
for ch in result.chars() {
280+
id.extend(ch.to_uppercase());
282281
}
283282

284283
let taken: Ident = syn::parse_str(&id)?;

0 commit comments

Comments
 (0)