use cssparser::{Parser, match_ignore_ascii_case};
use crate::layout::style::{CssSyntaxKind, CssToken, FromCss, MakeComputed, ParseResult};
#[derive(Debug, Clone, PartialEq, Default)]
#[non_exhaustive]
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())),
}
}
const VALID_TOKENS: &'static [CssToken] = &[
CssToken::Keyword("clip"),
CssToken::Keyword("ellipsis"),
CssToken::Syntax(CssSyntaxKind::String),
];
}