style: Make document condition parsing a bit nicer.

Bug: 1475511
Reviewed-by: xidorn
MozReview-Commit-ID: Gi0FxrEAYcE
This commit is contained in:
Emilio Cobos Álvarez 2018-07-19 19:12:18 +02:00
parent 095841db7f
commit 5634a3f670
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C

View file

@ -122,33 +122,32 @@ impl DocumentMatchingFunction {
context: &ParserContext, context: &ParserContext,
input: &mut Parser<'i, 't>, input: &mut Parser<'i, 't>,
) -> Result<Self, ParseError<'i>> { ) -> Result<Self, ParseError<'i>> {
if input if let Ok(url) = input.try(|input| CssUrl::parse(context, input)) {
.try(|input| input.expect_function_matching("url-prefix")) return Ok(DocumentMatchingFunction::Url(url))
.is_ok()
{
return parse_quoted_or_unquoted_string!(input, DocumentMatchingFunction::UrlPrefix);
} }
if input let location = input.current_source_location();
.try(|input| input.expect_function_matching("domain")) let function = input.expect_function()?.clone();
.is_ok() match_ignore_ascii_case! { &function,
{ "url-prefix" => {
return parse_quoted_or_unquoted_string!(input, DocumentMatchingFunction::Domain); parse_quoted_or_unquoted_string!(input, DocumentMatchingFunction::UrlPrefix)
} }
"domain" => {
if input parse_quoted_or_unquoted_string!(input, DocumentMatchingFunction::Domain)
.try(|input| input.expect_function_matching("regexp")) }
.is_ok() "regexp" => {
{ input.parse_nested_block(|input| {
return input.parse_nested_block(|input| { Ok(DocumentMatchingFunction::Regexp(
Ok(DocumentMatchingFunction::Regexp( input.expect_string()?.as_ref().to_owned(),
input.expect_string()?.as_ref().to_owned(), ))
})
}
_ => {
Err(location.new_custom_error(
StyleParseErrorKind::UnexpectedFunction(function.clone())
)) ))
}); }
} }
let url = CssUrl::parse(context, input)?;
Ok(DocumentMatchingFunction::Url(url))
} }
#[cfg(feature = "gecko")] #[cfg(feature = "gecko")]