mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Document selectors::Visit
This commit is contained in:
parent
c14b766ff5
commit
1a6010f19f
2 changed files with 29 additions and 9 deletions
|
@ -19,7 +19,7 @@ use std::borrow::{Borrow, Cow};
|
||||||
use std::fmt::{self, Display, Debug, Write};
|
use std::fmt::{self, Display, Debug, Write};
|
||||||
use std::iter::Rev;
|
use std::iter::Rev;
|
||||||
use std::slice;
|
use std::slice;
|
||||||
use visitor::SelectorVisitor;
|
pub use visitor::{Visit, SelectorVisitor};
|
||||||
|
|
||||||
/// A trait that represents a pseudo-element.
|
/// A trait that represents a pseudo-element.
|
||||||
pub trait PseudoElement : Sized + ToCss {
|
pub trait PseudoElement : Sized + ToCss {
|
||||||
|
@ -326,14 +326,6 @@ impl AncestorHashes {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait Visit {
|
|
||||||
type Impl: SelectorImpl;
|
|
||||||
|
|
||||||
fn visit<V>(&self, visitor: &mut V) -> bool
|
|
||||||
where
|
|
||||||
V: SelectorVisitor<Impl = Self::Impl>;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<Impl: SelectorImpl> Visit for Selector<Impl> {
|
impl<Impl: SelectorImpl> Visit for Selector<Impl> {
|
||||||
type Impl = Impl;
|
type Impl = Impl;
|
||||||
|
|
||||||
|
|
|
@ -44,3 +44,31 @@ pub trait SelectorVisitor {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Enables traversing selector components stored in various types
|
||||||
|
pub trait Visit {
|
||||||
|
/// The type parameter of selector component types.
|
||||||
|
type Impl: SelectorImpl;
|
||||||
|
|
||||||
|
/// Traverse selector components inside `self`.
|
||||||
|
///
|
||||||
|
/// Implementations of this method should call `SelectorVisitor` methods
|
||||||
|
/// or other impls of `Visit` as appropriate based on the fields of `Self`.
|
||||||
|
///
|
||||||
|
/// A return value of `false` indicates terminating the traversal.
|
||||||
|
/// It should be propagated with an early return.
|
||||||
|
/// On the contrary, `true` indicates that all fields of `self` have been traversed:
|
||||||
|
///
|
||||||
|
/// ```rust,ignore
|
||||||
|
/// if !visitor.visit_simple_selector(&self.some_simple_selector) {
|
||||||
|
/// return false;
|
||||||
|
/// }
|
||||||
|
/// if !self.some_component.visit(visitor) {
|
||||||
|
/// return false;
|
||||||
|
/// }
|
||||||
|
/// true
|
||||||
|
/// ```
|
||||||
|
fn visit<V>(&self, visitor: &mut V) -> bool
|
||||||
|
where
|
||||||
|
V: SelectorVisitor<Impl = Self::Impl>;
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue