feature: implement :glob()
This commit is contained in:
parent
d39e170adb
commit
722106595b
1 changed files with 100 additions and 17 deletions
|
|
@ -1,8 +1,8 @@
|
|||
use ostrta::OneSyntaxToRuleThemAll;
|
||||
use raffia::{
|
||||
ast::{
|
||||
ClassSelector, CompoundSelector, IdSelector, NestingSelector, SimpleSelector, Statement,
|
||||
Stylesheet, TypeSelector,
|
||||
ClassSelector, CompoundSelector, IdSelector, NestingSelector, PseudoClassSelector,
|
||||
SimpleSelector, Statement, Stylesheet, TypeSelector,
|
||||
},
|
||||
ParserBuilder,
|
||||
};
|
||||
|
|
@ -56,6 +56,27 @@ impl<'s> StylesheetAdapter<'s> {
|
|||
self.selectors_by(|c| c.as_nesting().cloned())
|
||||
}
|
||||
|
||||
/// special selector case searching for :g(whatever), :glob(whatever), :global(whatever)
|
||||
pub fn glob_modified_selectors(&self) -> Vec<PseudoClassSelector<'s>> {
|
||||
self.selectors_by(|c| {
|
||||
let cps = match c.as_pseudo_class() {
|
||||
Some(s) => s.clone(),
|
||||
_ => return None,
|
||||
};
|
||||
|
||||
let ident = match cps.name.as_literal().map(|r| r.raw) {
|
||||
Some(i) => i,
|
||||
_ => return None,
|
||||
};
|
||||
|
||||
if ident == "global" {
|
||||
Some(cps)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/// Return collected [Vec] of owned values modulo `T`, filtered by `F`.
|
||||
///
|
||||
/// This is preferred way to apply custom filtering on selectors over
|
||||
|
|
|
|||
Loading…
Reference in a new issue