Skip to main content

oxc_css_parser/tokenizer/
convert.rs

1use super::token;
2use crate::error::ErrorKind;
3
4impl TryFrom<token::Number<'_>> for i32 {
5    type Error = ErrorKind;
6
7    fn try_from(token::Number { raw, .. }: token::Number) -> Result<Self, ErrorKind> {
8        let value = raw.parse::<f32>().map_err(|_| ErrorKind::InvalidNumber)?;
9        if value.fract() == 0.0 {
10            // SAFETY: f32 parsed from source text will never be NaN or infinity.
11            unsafe { Ok(value.to_int_unchecked()) }
12        } else {
13            Err(ErrorKind::ExpectInteger)
14        }
15    }
16}