Skip to content

Commit e31234f

Browse files
committed
Selector docs
1 parent 9f2e369 commit e31234f

File tree

1 file changed

+87
-9
lines changed

1 file changed

+87
-9
lines changed

src/selector.rs

Lines changed: 87 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
//! Selectors.
2-
3-
#![allow(missing_docs)]
1+
//! CSS selectors.
42
53
use crate::compat::Feature;
64
use crate::error::{ParserError, PrinterError};
@@ -33,9 +31,13 @@ mod private {
3331

3432
use private::Selectors;
3533

34+
/// A list of selectors.
3635
pub type SelectorList<'i> = parcel_selectors::SelectorList<'i, Selectors>;
36+
/// A CSS selector, including a list of components.
3737
pub type Selector<'i> = parcel_selectors::parser::Selector<'i, Selectors>;
38+
/// An individual component within a selector.
3839
pub type Component<'i> = parcel_selectors::parser::Component<'i, Selectors>;
40+
/// A combinator.
3941
pub use parcel_selectors::parser::Combinator;
4042

4143
impl<'i> SelectorImpl<'i> for Selectors {
@@ -307,101 +309,159 @@ impl<'a, 'o, 'i, T> parcel_selectors::parser::Parser<'i> for SelectorParser<'a,
307309
}
308310

309311
enum_property! {
312+
/// The [:dir()](https://drafts.csswg.org/selectors-4/#the-dir-pseudo) pseudo class.
310313
#[derive(Eq)]
311314
pub enum Direction {
315+
/// Left to right
312316
Ltr,
317+
/// Right to left
313318
Rtl,
314319
}
315320
}
316321

317-
/// https://drafts.csswg.org/selectors-4/#structural-pseudos
322+
/// A pseudo class.
318323
#[derive(Clone, PartialEq)]
319324
pub enum PseudoClass<'i> {
320325
// https://drafts.csswg.org/selectors-4/#linguistic-pseudos
326+
/// The [:lang()](https://drafts.csswg.org/selectors-4/#the-lang-pseudo) pseudo class.
321327
Lang(Vec<CowArcStr<'i>>),
328+
/// The [:dir()](https://drafts.csswg.org/selectors-4/#the-dir-pseudo) pseudo class.
322329
Dir(Direction),
323330

324331
// https://drafts.csswg.org/selectors-4/#useraction-pseudos
332+
/// The [:hover](https://drafts.csswg.org/selectors-4/#the-hover-pseudo) pseudo class.
325333
Hover,
334+
/// The [:active](https://drafts.csswg.org/selectors-4/#the-active-pseudo) pseudo class.
326335
Active,
336+
/// The [:focus](https://drafts.csswg.org/selectors-4/#the-focus-pseudo) pseudo class.
327337
Focus,
338+
/// The [:focus-visible](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo) pseudo class.
328339
FocusVisible,
340+
/// The [:focus-within](https://drafts.csswg.org/selectors-4/#the-focus-within-pseudo) pseudo class.
329341
FocusWithin,
330342

331343
// https://drafts.csswg.org/selectors-4/#time-pseudos
344+
/// The [:current](https://drafts.csswg.org/selectors-4/#the-current-pseudo) pseudo class.
332345
Current,
346+
/// The [:past](https://drafts.csswg.org/selectors-4/#the-past-pseudo) pseudo class.
333347
Past,
348+
/// The [:future](https://drafts.csswg.org/selectors-4/#the-future-pseudo) pseudo class.
334349
Future,
335350

336351
// https://drafts.csswg.org/selectors-4/#resource-pseudos
352+
/// The [:playing](https://drafts.csswg.org/selectors-4/#selectordef-playing) pseudo class.
337353
Playing,
354+
/// The [:paused](https://drafts.csswg.org/selectors-4/#selectordef-paused) pseudo class.
338355
Paused,
356+
/// The [:seeking](https://drafts.csswg.org/selectors-4/#selectordef-seeking) pseudo class.
339357
Seeking,
358+
/// The [:buffering](https://drafts.csswg.org/selectors-4/#selectordef-buffering) pseudo class.
340359
Buffering,
360+
/// The [:stalled](https://drafts.csswg.org/selectors-4/#selectordef-stalled) pseudo class.
341361
Stalled,
362+
/// The [:muted](https://drafts.csswg.org/selectors-4/#selectordef-muted) pseudo class.
342363
Muted,
364+
/// The [:volume-locked](https://drafts.csswg.org/selectors-4/#selectordef-volume-locked) pseudo class.
343365
VolumeLocked,
344366

345-
// https://fullscreen.spec.whatwg.org/#:fullscreen-pseudo-class
367+
/// The [:fullscreen](https://fullscreen.spec.whatwg.org/#:fullscreen-pseudo-class) pseudo class.
346368
Fullscreen(VendorPrefix),
347369

348-
// https://drafts.csswg.org/selectors-4/#the-defined-pseudo
370+
/// The [:defined](https://drafts.csswg.org/selectors-4/#the-defined-pseudo) pseudo class.
349371
Defined,
350372

351373
// https://drafts.csswg.org/selectors-4/#location
374+
/// The [:any-link](https://drafts.csswg.org/selectors-4/#the-any-link-pseudo) pseudo class.
352375
AnyLink(VendorPrefix),
376+
/// The [:link](https://drafts.csswg.org/selectors-4/#link-pseudo) pseudo class.
353377
Link,
378+
/// The [:local-link](https://drafts.csswg.org/selectors-4/#the-local-link-pseudo) pseudo class.
354379
LocalLink,
380+
/// The [:target](https://drafts.csswg.org/selectors-4/#the-target-pseudo) pseudo class.
355381
Target,
382+
/// The [:target-within](https://drafts.csswg.org/selectors-4/#the-target-within-pseudo) pseudo class.
356383
TargetWithin,
384+
/// The [:visited](https://drafts.csswg.org/selectors-4/#visited-pseudo) pseudo class.
357385
Visited,
358386

359387
// https://drafts.csswg.org/selectors-4/#input-pseudos
388+
/// The [:enabled](https://drafts.csswg.org/selectors-4/#enabled-pseudo) pseudo class.
360389
Enabled,
390+
/// The [:disabled](https://drafts.csswg.org/selectors-4/#disabled-pseudo) pseudo class.
361391
Disabled,
392+
/// The [:read-only](https://drafts.csswg.org/selectors-4/#read-only-pseudo) pseudo class.
362393
ReadOnly(VendorPrefix),
394+
/// The [:read-write](https://drafts.csswg.org/selectors-4/#read-write-pseudo) pseudo class.
363395
ReadWrite(VendorPrefix),
396+
/// The [:placeholder-shown](https://drafts.csswg.org/selectors-4/#placeholder) pseudo class.
364397
PlaceholderShown(VendorPrefix),
398+
/// The [:default](https://drafts.csswg.org/selectors-4/#the-default-pseudo) pseudo class.
365399
Default,
400+
/// The [:checked](https://drafts.csswg.org/selectors-4/#checked) pseudo class.
366401
Checked,
402+
/// The [:indeterminate](https://drafts.csswg.org/selectors-4/#indeterminate) pseudo class.
367403
Indeterminate,
404+
/// The [:blank](https://drafts.csswg.org/selectors-4/#blank) pseudo class.
368405
Blank,
406+
/// The [:valid](https://drafts.csswg.org/selectors-4/#valid-pseudo) pseudo class.
369407
Valid,
408+
/// The [:invalid](https://drafts.csswg.org/selectors-4/#invalid-pseudo) pseudo class.
370409
Invalid,
410+
/// The [:in-range](https://drafts.csswg.org/selectors-4/#in-range-pseudo) pseudo class.
371411
InRange,
412+
/// The [:out-of-range](https://drafts.csswg.org/selectors-4/#out-of-range-pseudo) pseudo class.
372413
OutOfRange,
414+
/// The [:required](https://drafts.csswg.org/selectors-4/#required-pseudo) pseudo class.
373415
Required,
416+
/// The [:optional](https://drafts.csswg.org/selectors-4/#optional-pseudo) pseudo class.
374417
Optional,
418+
/// The [:user-valid](https://drafts.csswg.org/selectors-4/#user-valid-pseudo) pseudo class.
375419
UserValid,
420+
/// The [:used-invalid](https://drafts.csswg.org/selectors-4/#user-invalid-pseudo) pseudo class.
376421
UserInvalid,
377422

378-
// https://html.spec.whatwg.org/multipage/semantics-other.html#selector-autofill
423+
/// The [:autofill](https://html.spec.whatwg.org/multipage/semantics-other.html#selector-autofill) pseudo class.
379424
Autofill(VendorPrefix),
380425

381426
// CSS modules
427+
/// The CSS modules :local() pseudo class.
382428
Local(Box<Selector<'i>>),
429+
/// The CSS modules :global() pseudo class.
383430
Global(Box<Selector<'i>>),
384431

385-
// https://webkit.org/blog/363/styling-scrollbars/
432+
/// A [webkit scrollbar](https://webkit.org/blog/363/styling-scrollbars/) pseudo class.
386433
WebKitScrollbar(WebKitScrollbarPseudoClass),
387434

435+
/// An unknown pseudo class.
388436
Custom(CowArcStr<'i>),
437+
/// An unknown functional pseudo class.
389438
CustomFunction(CowArcStr<'i>, TokenList<'i>),
390439
}
391440

392-
/// https://webkit.org/blog/363/styling-scrollbars/
441+
/// A [webkit scrollbar](https://webkit.org/blog/363/styling-scrollbars/) pseudo class.
393442
#[derive(Clone, Eq, PartialEq)]
394443
pub enum WebKitScrollbarPseudoClass {
444+
/// :horizontal
395445
Horizontal,
446+
/// :vertical
396447
Vertical,
448+
/// :decrement
397449
Decrement,
450+
/// :increment
398451
Increment,
452+
/// :start
399453
Start,
454+
/// :end
400455
End,
456+
/// :double-button
401457
DoubleButton,
458+
/// :single-button
402459
SingleButton,
460+
/// :no-button
403461
NoButton,
462+
/// :corner-present
404463
CornerPresent,
464+
/// :window-inactive
405465
WindowInactive,
406466
}
407467

@@ -664,26 +724,44 @@ impl<'i> PseudoClass<'i> {
664724
}
665725
}
666726

727+
/// A pseudo element.
667728
#[derive(PartialEq, Clone, Debug)]
668729
pub enum PseudoElement<'i> {
730+
/// The [::after](https://drafts.csswg.org/css-pseudo-4/#selectordef-after) pseudo element.
669731
After,
732+
/// The [::before](https://drafts.csswg.org/css-pseudo-4/#selectordef-before) pseudo element.
670733
Before,
734+
/// The [::first-line](https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo) pseudo element.
671735
FirstLine,
736+
/// The [::first-letter](https://drafts.csswg.org/css-pseudo-4/#first-letter-pseudo) pseudo element.
672737
FirstLetter,
738+
/// The [::selection](https://drafts.csswg.org/css-pseudo-4/#selectordef-selection) pseudo element.
673739
Selection(VendorPrefix),
740+
/// The [::placeholder](https://drafts.csswg.org/css-pseudo-4/#placeholder-pseudo) pseudo element.
674741
Placeholder(VendorPrefix),
742+
/// The [::marker](https://drafts.csswg.org/css-pseudo-4/#marker-pseudo) pseudo element.
675743
Marker,
744+
/// The [::backdrop](https://fullscreen.spec.whatwg.org/#::backdrop-pseudo-element) pseudo element.
676745
Backdrop(VendorPrefix),
746+
/// The [::file-selector-button](https://drafts.csswg.org/css-pseudo-4/#file-selector-button-pseudo) pseudo element.
677747
FileSelectorButton(VendorPrefix),
748+
/// A [webkit scrollbar](https://webkit.org/blog/363/styling-scrollbars/) pseudo element.
678749
WebKitScrollbar(WebKitScrollbarPseudoElement),
750+
/// The [::cue](https://w3c.github.io/webvtt/#the-cue-pseudo-element) pseudo element.
679751
Cue,
752+
/// The [::cue-region](https://w3c.github.io/webvtt/#the-cue-region-pseudo-element) pseudo element.
680753
CueRegion,
754+
/// The [::cue()](https://w3c.github.io/webvtt/#cue-selector) functional pseudo element.
681755
CueFunction(Box<Selector<'i>>),
756+
/// The [::cue-region()](https://w3c.github.io/webvtt/#cue-region-selector) functional pseudo element.
682757
CueRegionFunction(Box<Selector<'i>>),
758+
/// An unknown pseudo element.
683759
Custom(CowArcStr<'i>),
760+
/// An unknown functional pseudo element.
684761
CustomFunction(CowArcStr<'i>, TokenList<'i>),
685762
}
686763

764+
/// A [webkit scrollbar](https://webkit.org/blog/363/styling-scrollbars/) pseudo element.
687765
#[derive(PartialEq, Eq, Clone, Debug, Hash)]
688766
pub enum WebKitScrollbarPseudoElement {
689767
/// ::-webkit-scrollbar

0 commit comments

Comments
 (0)