remove devour_whitespace from selector parsing
This commit is contained in:
parent
36530a3309
commit
dc3208cc05
@ -3,7 +3,7 @@ use codemap::Span;
|
|||||||
use crate::{
|
use crate::{
|
||||||
error::SassResult,
|
error::SassResult,
|
||||||
parse::Parser,
|
parse::Parser,
|
||||||
utils::{devour_whitespace, is_name, is_name_start, read_until_closing_paren},
|
utils::{is_name, is_name_start, read_until_closing_paren},
|
||||||
Token,
|
Token,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ impl<'a, 'b> SelectorParser<'a, 'b> {
|
|||||||
fn parse_selector_list(&mut self) -> SassResult<SelectorList> {
|
fn parse_selector_list(&mut self) -> SassResult<SelectorList> {
|
||||||
let mut components = vec![self.parse_complex_selector(false)?];
|
let mut components = vec![self.parse_complex_selector(false)?];
|
||||||
|
|
||||||
devour_whitespace(self.parser.toks);
|
self.parser.whitespace();
|
||||||
|
|
||||||
let mut line_break = false;
|
let mut line_break = false;
|
||||||
|
|
||||||
@ -132,7 +132,7 @@ impl<'a, 'b> SelectorParser<'a, 'b> {
|
|||||||
|
|
||||||
// todo: or patterns
|
// todo: or patterns
|
||||||
loop {
|
loop {
|
||||||
devour_whitespace(self.parser.toks);
|
self.parser.whitespace();
|
||||||
|
|
||||||
// todo: can we do while let Some(..) = self.parser.toks.peek() ?
|
// todo: can we do while let Some(..) = self.parser.toks.peek() ?
|
||||||
match self.parser.toks.peek() {
|
match self.parser.toks.peek() {
|
||||||
@ -307,7 +307,7 @@ impl<'a, 'b> SelectorParser<'a, 'b> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
devour_whitespace(self.parser.toks);
|
self.parser.whitespace();
|
||||||
|
|
||||||
let unvendored = unvendor(&name);
|
let unvendored = unvendor(&name);
|
||||||
|
|
||||||
@ -318,25 +318,25 @@ impl<'a, 'b> SelectorParser<'a, 'b> {
|
|||||||
// todo: lowercase?
|
// todo: lowercase?
|
||||||
if SELECTOR_PSEUDO_ELEMENTS.contains(&unvendored) {
|
if SELECTOR_PSEUDO_ELEMENTS.contains(&unvendored) {
|
||||||
selector = Some(self.parse_selector_list()?);
|
selector = Some(self.parse_selector_list()?);
|
||||||
devour_whitespace(self.parser.toks);
|
self.parser.whitespace();
|
||||||
self.expect_closing_paren()?;
|
self.expect_closing_paren()?;
|
||||||
} else {
|
} else {
|
||||||
argument = Some(self.declaration_value()?);
|
argument = Some(self.declaration_value()?);
|
||||||
}
|
}
|
||||||
} else if SELECTOR_PSEUDO_CLASSES.contains(&unvendored) {
|
} else if SELECTOR_PSEUDO_CLASSES.contains(&unvendored) {
|
||||||
selector = Some(self.parse_selector_list()?);
|
selector = Some(self.parse_selector_list()?);
|
||||||
devour_whitespace(self.parser.toks);
|
self.parser.whitespace();
|
||||||
self.expect_closing_paren()?;
|
self.expect_closing_paren()?;
|
||||||
} else if unvendored == "nth-child" || unvendored == "nth-last-child" {
|
} else if unvendored == "nth-child" || unvendored == "nth-last-child" {
|
||||||
let mut this_arg = self.parse_a_n_plus_b()?;
|
let mut this_arg = self.parse_a_n_plus_b()?;
|
||||||
let found_whitespace = devour_whitespace(self.parser.toks);
|
let found_whitespace = self.parser.whitespace();
|
||||||
#[allow(clippy::match_same_arms)]
|
#[allow(clippy::match_same_arms)]
|
||||||
match (found_whitespace, self.parser.toks.peek()) {
|
match (found_whitespace, self.parser.toks.peek()) {
|
||||||
(_, Some(Token { kind: ')', .. })) => {}
|
(_, Some(Token { kind: ')', .. })) => {}
|
||||||
(true, _) => {
|
(true, _) => {
|
||||||
self.expect_identifier("of")?;
|
self.expect_identifier("of")?;
|
||||||
this_arg.push_str(" of");
|
this_arg.push_str(" of");
|
||||||
devour_whitespace(self.parser.toks);
|
self.parser.whitespace();
|
||||||
selector = Some(self.parse_selector_list()?);
|
selector = Some(self.parse_selector_list()?);
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
@ -473,7 +473,7 @@ impl<'a, 'b> SelectorParser<'a, 'b> {
|
|||||||
buf.push(t.kind);
|
buf.push(t.kind);
|
||||||
self.parser.toks.next();
|
self.parser.toks.next();
|
||||||
}
|
}
|
||||||
devour_whitespace(self.parser.toks);
|
self.parser.whitespace();
|
||||||
if let Some(t) = self.parser.toks.peek() {
|
if let Some(t) = self.parser.toks.peek() {
|
||||||
if t.kind != 'n' && t.kind != 'N' {
|
if t.kind != 'n' && t.kind != 'N' {
|
||||||
return Ok(buf);
|
return Ok(buf);
|
||||||
@ -493,14 +493,14 @@ impl<'a, 'b> SelectorParser<'a, 'b> {
|
|||||||
|
|
||||||
buf.push('n');
|
buf.push('n');
|
||||||
|
|
||||||
devour_whitespace(self.parser.toks);
|
self.parser.whitespace();
|
||||||
|
|
||||||
if let Some(t @ Token { kind: '+', .. }) | Some(t @ Token { kind: '-', .. }) =
|
if let Some(t @ Token { kind: '+', .. }) | Some(t @ Token { kind: '-', .. }) =
|
||||||
self.parser.toks.peek()
|
self.parser.toks.peek()
|
||||||
{
|
{
|
||||||
buf.push(t.kind);
|
buf.push(t.kind);
|
||||||
self.parser.toks.next();
|
self.parser.toks.next();
|
||||||
devour_whitespace(self.parser.toks);
|
self.parser.whitespace();
|
||||||
match self.parser.toks.peek() {
|
match self.parser.toks.peek() {
|
||||||
Some(t) if !t.kind.is_ascii_digit() => {
|
Some(t) if !t.kind.is_ascii_digit() => {
|
||||||
return Err(("Expected a number.", self.span).into())
|
return Err(("Expected a number.", self.span).into())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user