use cssparser::{Parser, match_ignore_ascii_case};
use crate::layout::style::{CssToken, FromCss, MakeComputed, ParseResult};
#[derive(Debug, Clone, PartialEq, Default)]
pub enum TextOverflow {
#[default]
Clip,
Ellipsis,
Custom(String),
}
impl MakeComputed for TextOverflow {}
impl<'i> FromCss<'i> for TextOverflow {
fn from_css(input: &mut Parser<'i, '_>) -> ParseResult<'i, Self> {
let string = input.expect_ident_or_string()?;
match_ignore_ascii_case! {string,
"clip" => Ok(TextOverflow::Clip),
"ellipsis" => Ok(TextOverflow::Ellipsis),
_ => Ok(TextOverflow::Custom(string.to_string())),
}
}
fn valid_tokens() -> &'static [CssToken] {
&[
CssToken::Keyword("clip"),
CssToken::Keyword("ellipsis"),
CssToken::Token("string"),
]
}
}