#[cfg(not(feature = "std"))]
use alloc::format;
use core::fmt;
#[cfg(feature = "std")]
use std::format;
use super::CoreError;
pub fn parse_numeric<T>(value_str: &str) -> Result<T, CoreError>
where
T: core::str::FromStr,
T::Err: fmt::Display,
{
value_str
.trim()
.parse()
.map_err(|e| CoreError::InvalidNumeric(format!("Failed to parse '{value_str}': {e}")))
}
#[must_use]
pub fn normalize_field_value(value: &str) -> &str {
value.trim()
}
#[must_use]
pub fn validate_ass_name(name: &str) -> bool {
!name.is_empty()
&& !name.contains(',') && !name.contains(':') && !name.contains('{') && !name.contains('}') && name.chars().all(|c| !c.is_control() || c == '\t')
}