#[derive(Clone, Debug)]
pub struct DocumentCondition(pub Vec<UrlMatchingFunction>);
impl ToCss for DocumentCondition
{
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result
{
let mut iter = self.0.iter();
let first = iter.next().expect("Empty DocumentCondition, should contain at least one URL matching function");
first.to_css(dest)?;
for url_matching_function in iter
{
dest.write_str(", ")?;
url_matching_function.to_css(dest)?;
}
Ok(())
}
}
impl DocumentCondition
{
pub(crate) fn parse<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) -> Result<Self, ParseError<'i, CustomParseError<'i>>>
{
input.parse_comma_separated(|input| UrlMatchingFunction::parse(context, input)).map(DocumentCondition)
}
pub fn evaluate<D: Document>(&self, document: &D) -> bool
{
self.0.iter().any(|ref url_matching_function| url_matching_function.evaluate(document) )
}
}