CommentStyle

Enum CommentStyle 

Source
pub enum CommentStyle {
    Block = 0,
    BlockStar = 1,
    BlockBang = 2,
    BlockPound = 3,
    BlockHeading = 4,
    Single = 5,
    SingleStar = 6,
    SingleBang = 7,
}
Expand description

An enum representing the “Style” the Kind::Comment token represents.

A Token with Kind::Comment will store this data internal to the token. Using Token::comment_style() will return this enum, depending on what characters make up the beginning of the comment token. By default the Lexer will only produce multi-line - aka “Block” - comments, but adding Feature::SeparateWhitespace will allow the Lexer to produce single line comments too.

A basic Block comment style uses the /* leading characters, but sub-styles of the block style are also computed, for example BlockStar represents a comment using the “double star” syntax to open the comment, i.e. /**. Determing if these comments are using these alternate style can help a parser (or writer) determine if it should retain these comments or otherwise treat them differently to regular block comments.

use css_lexer::*;
let mut lexer = Lexer::new(&EmptyAtomSet::ATOMS, "/* Normal Comment */  /** Double Star Comment */");
{
    // This token will be collapsed Whitespace.
    let token = lexer.advance();
    assert_eq!(token, Kind::Comment);
    assert_eq!(token, CommentStyle::Block);
}
assert_eq!(lexer.advance(), Kind::Whitespace);
{
    // This token will be collapsed Whitespace.
    let token = lexer.advance();
    assert_eq!(token, Kind::Comment);
    assert_eq!(token, CommentStyle::BlockStar);
}

Variants§

§

Block = 0

A basic block comment which uses /* as the leading style. The third character may be a whitespace, or may include a character that isn’t !, #, =, -.

§

BlockStar = 1

A block comment which uses /** as the leading style. The two *s must be adjacent, so this does not count /* *.

§

BlockBang = 2

A block comment which uses /*! as the leading style. The * and ! must be adjacent, so this does not count /* !.

§

BlockPound = 3

A block comment which uses /*# as the leading style. The * and # must be adjacent, so this does not count /* #.

§

BlockHeading = 4

A block comment which uses /*= or /*- as the leading style. The * and - or = must be adjacent, so this does not count /* #.

§

Single = 5

A basic single line comment which uses // as the leading style. The third character may be a whitespace, or may include a character that isn’t *, !. The Lexer can only produce a Token with this style if Feature::SingleLineComments is enabled.

§

SingleStar = 6

A single line comment which uses //* as the leading style. The * be adjacent to the //, so this does not count // *. The Lexer can only produce a Token with this style if Feature::SingleLineComments is enabled.

§

SingleBang = 7

A single line comment which uses //! as the leading style. The ! be adjacent to the //, so this does not count // !. The Lexer can only produce a Token with this style if Feature::SingleLineComments is enabled.

Implementations§

Source§

impl CommentStyle

Source

pub fn is_block(&self) -> bool

Source

pub fn is_non_standard(&self) -> bool

Source

pub fn retain(&self) -> bool

Trait Implementations§

Source§

impl Clone for CommentStyle

Source§

fn clone(&self) -> CommentStyle

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CommentStyle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for CommentStyle

Source§

fn default() -> CommentStyle

Returns the “default value” for a type. Read more
Source§

impl Hash for CommentStyle

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for CommentStyle

Source§

fn cmp(&self, other: &CommentStyle) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq<CommentStyle> for &Cursor

Source§

fn eq(&self, other: &CommentStyle) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<CommentStyle> for Cursor

Source§

fn eq(&self, other: &CommentStyle) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<CommentStyle> for SourceCursor<'_>

Source§

fn eq(&self, other: &CommentStyle) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq<CommentStyle> for Token

Source§

fn eq(&self, other: &CommentStyle) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialEq for CommentStyle

Source§

fn eq(&self, other: &CommentStyle) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for CommentStyle

Source§

fn partial_cmp(&self, other: &CommentStyle) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Copy for CommentStyle

Source§

impl Eq for CommentStyle

Source§

impl StructuralPartialEq for CommentStyle

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.