use peekmore rather than std::iter::Peekable

This commit is contained in:
ConnorSkees 2020-04-20 03:45:28 -04:00
parent e07ceda8c7
commit 4cdcf4f0d4
15 changed files with 112 additions and 100 deletions

View File

@ -1,8 +1,9 @@
use std::collections::HashMap;
use std::iter::Peekable;
use codemap::{Span, Spanned};
use peekmore::PeekMoreIterator;
use crate::error::SassResult;
use crate::scope::Scope;
use crate::selector::Selector;
@ -172,7 +173,7 @@ impl CallArgs {
}
pub(crate) fn eat_func_args<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<FuncArgs> {
@ -275,7 +276,7 @@ pub(crate) fn eat_func_args<I: Iterator<Item = Token>>(
}
pub(crate) fn eat_call_args<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<CallArgs> {

View File

@ -1,7 +1,7 @@
use std::iter::Peekable;
use codemap::{Span, Spanned};
use peekmore::{PeekMore, PeekMoreIterator};
use num_traits::cast::ToPrimitive;
use super::parse::eat_stmts;
@ -18,7 +18,7 @@ use crate::value::{Number, Value};
use crate::Token;
pub(crate) fn parse_for<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &mut Scope,
super_selector: &Selector,
span: Span,
@ -155,7 +155,7 @@ pub(crate) fn parse_for<I: Iterator<Item = Token>>(
},
)?;
stmts.extend(eat_stmts(
&mut body.clone().into_iter().peekable(),
&mut body.clone().into_iter().peekmore(),
scope,
super_selector,
)?);

View File

@ -1,9 +1,9 @@
use std::iter::Peekable;
use super::eat_stmts;
use codemap::{Span, Spanned};
use peekmore::{PeekMore, PeekMoreIterator};
use crate::args::{eat_func_args, CallArgs, FuncArgs};
use crate::atrule::AtRule;
use crate::error::SassResult;
@ -40,7 +40,7 @@ impl Function {
}
pub fn decl_from_tokens<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: Scope,
super_selector: &Selector,
) -> SassResult<(String, Function)> {
@ -84,7 +84,7 @@ impl Function {
Some(v) => v?,
None => match &arg.default {
Some(v) => Value::from_tokens(
&mut v.iter().cloned().peekable(),
&mut v.iter().cloned().peekmore(),
scope,
super_selector,
)?,
@ -110,7 +110,7 @@ impl Function {
match stmt.node {
Stmt::AtRule(AtRule::Return(toks)) => {
return Ok(Value::from_tokens(
&mut toks.into_iter().peekable(),
&mut toks.into_iter().peekmore(),
&self.scope,
super_selector,
)?

View File

@ -1,7 +1,7 @@
use std::iter::Peekable;
use codemap::Spanned;
use peekmore::{PeekMore, PeekMoreIterator};
use super::{eat_stmts, AtRule};
use crate::error::SassResult;
@ -32,7 +32,9 @@ impl Branch {
}
impl If {
pub fn from_tokens<I: Iterator<Item = Token>>(toks: &mut Peekable<I>) -> SassResult<If> {
pub fn from_tokens<I: Iterator<Item = Token>>(
toks: &mut PeekMoreIterator<I>,
) -> SassResult<If> {
let mut branches = Vec::new();
let init_cond = read_until_open_curly_brace(toks);
toks.next();
@ -111,7 +113,7 @@ impl If {
if !found_true {
toks = self.else_;
}
for stmt in eat_stmts(&mut toks.into_iter().peekable(), scope, super_selector)? {
for stmt in eat_stmts(&mut toks.into_iter().peekmore(), scope, super_selector)? {
match stmt.node {
Stmt::AtRule(AtRule::If(i)) => stmts.extend(i.eval(scope, super_selector)?),
Stmt::RuleSet(r) if r.selector.is_empty() => stmts.extend(r.rules),

View File

@ -1,8 +1,9 @@
use std::iter::Peekable;
use std::vec::IntoIter;
use codemap::Spanned;
use peekmore::{PeekMore, PeekMoreIterator};
use super::eat_stmts;
use crate::args::{eat_call_args, eat_func_args, CallArgs, FuncArgs};
@ -20,7 +21,7 @@ use crate::{eat_expr, Expr, RuleSet, Stmt, Token};
pub(crate) struct Mixin {
scope: Scope,
args: FuncArgs,
body: Peekable<IntoIter<Token>>,
body: PeekMoreIterator<IntoIter<Token>>,
content: Vec<Spanned<Stmt>>,
}
@ -31,7 +32,7 @@ impl Mixin {
body: Vec<Token>,
content: Vec<Spanned<Stmt>>,
) -> Self {
let body = body.into_iter().peekable();
let body = body.into_iter().peekmore();
Mixin {
scope,
args,
@ -41,7 +42,7 @@ impl Mixin {
}
pub fn decl_from_tokens<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<Spanned<(String, Mixin)>> {
@ -95,7 +96,7 @@ impl Mixin {
Some(v) => v?,
None => match &arg.default {
Some(v) => Value::from_tokens(
&mut v.iter().cloned().peekable(),
&mut v.iter().cloned().peekmore(),
scope,
super_selector,
)?,
@ -177,7 +178,7 @@ impl Mixin {
}
pub(crate) fn eat_include<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<Vec<Spanned<Stmt>>> {

View File

@ -1,7 +1,7 @@
use std::iter::Peekable;
use codemap::{Span, Spanned};
use peekmore::{PeekMore, PeekMoreIterator};
use crate::common::{Brackets, ListSeparator};
use crate::error::SassResult;
use crate::scope::Scope;
@ -50,7 +50,7 @@ impl AtRule {
pub fn from_tokens<I: Iterator<Item = Token>>(
rule: &AtRuleKind,
kind_span: Span,
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &mut Scope,
super_selector: &Selector,
) -> SassResult<Spanned<AtRule>> {
@ -139,7 +139,7 @@ impl AtRule {
let mut selector = &Selector::replace(
super_selector,
Selector::from_tokens(
&mut read_until_open_curly_brace(toks).into_iter().peekable(),
&mut read_until_open_curly_brace(toks).into_iter().peekmore(),
scope,
super_selector,
)?,
@ -156,7 +156,7 @@ impl AtRule {
devour_whitespace(toks);
let mut styles = Vec::new();
let raw_stmts = eat_stmts_at_root(
&mut body.into_iter().peekable(),
&mut body.into_iter().peekmore(),
scope,
selector,
0,
@ -284,7 +284,7 @@ impl AtRule {
}
stmts.extend(eat_stmts(
&mut body.clone().into_iter().peekable(),
&mut body.clone().into_iter().peekmore(),
scope,
super_selector,
)?);
@ -323,7 +323,7 @@ impl AtRule {
let mut val = Value::from_vec(cond.clone(), scope, super_selector)?;
while val.node.is_true(val.span)? {
stmts.extend(eat_stmts(
&mut body.clone().into_iter().peekable(),
&mut body.clone().into_iter().peekmore(),
scope,
super_selector,
)?);

View File

@ -1,14 +1,14 @@
use std::iter::Peekable;
use codemap::Spanned;
use peekmore::PeekMoreIterator;
use crate::error::SassResult;
use crate::scope::Scope;
use crate::selector::Selector;
use crate::{eat_expr, Expr, RuleSet, Stmt, Token};
pub(crate) fn eat_stmts<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &mut Scope,
super_selector: &Selector,
) -> SassResult<Vec<Spanned<Stmt>>> {
@ -46,7 +46,7 @@ pub(crate) fn eat_stmts<I: Iterator<Item = Token>>(
}
pub(crate) fn eat_stmts_at_root<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &mut Scope,
super_selector: &Selector,
mut nesting: usize,

View File

@ -1,7 +1,7 @@
use std::iter::Peekable;
use codemap::{Span, Spanned};
use peekmore::PeekMoreIterator;
use super::parse::eat_stmts;
use crate::error::SassResult;
use crate::scope::Scope;
@ -19,7 +19,7 @@ pub(crate) struct UnknownAtRule {
impl UnknownAtRule {
pub fn from_tokens<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
name: &str,
scope: &mut Scope,
super_selector: &Selector,

View File

@ -83,11 +83,13 @@ grass input.scss
use std::fmt::{self, Display};
use std::fs;
use std::io::Write;
use std::iter::{Iterator, Peekable};
use std::iter::Iterator;
use std::path::Path;
use codemap::{CodeMap, Span, Spanned};
use peekmore::{PeekMore, PeekMoreIterator};
use crate::atrule::{eat_include, AtRule, AtRuleKind, Function, Mixin};
pub use crate::error::{SassError, SassResult};
use crate::format::PrettyPrinter;
@ -220,7 +222,7 @@ impl StyleSheet {
let file = map.add_file("stdin".into(), input);
Css::from_stylesheet(StyleSheet(
StyleSheetParser {
lexer: Lexer::new(&file).peekable(),
lexer: Lexer::new(&file).peekmore(),
nesting: 0,
map: &map,
}
@ -255,7 +257,7 @@ impl StyleSheet {
let file = map.add_file(p.clone().into(), String::from_utf8(fs::read(p.as_ref())?)?);
Css::from_stylesheet(StyleSheet(
StyleSheetParser {
lexer: Lexer::new(&file).peekable(),
lexer: Lexer::new(&file).peekmore(),
nesting: 0,
map: &map,
}
@ -275,7 +277,7 @@ impl StyleSheet {
let mut map = CodeMap::new();
let file = map.add_file(p.clone().into(), String::from_utf8(fs::read(p.as_ref())?)?);
Ok(StyleSheetParser {
lexer: Lexer::new(&file).peekable(),
lexer: Lexer::new(&file).peekmore(),
nesting: 0,
map: &map,
}
@ -288,7 +290,7 @@ impl StyleSheet {
}
struct StyleSheetParser<'a> {
lexer: Peekable<Lexer<'a>>,
lexer: PeekMoreIterator<Lexer<'a>>,
nesting: u32,
map: &'a CodeMap,
}
@ -520,7 +522,7 @@ impl<'a> StyleSheetParser<'a> {
}
pub(crate) fn eat_expr<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &mut Scope,
super_selector: &Selector,
) -> SassResult<Option<Spanned<Expr>>> {
@ -537,7 +539,7 @@ pub(crate) fn eat_expr<I: Iterator<Item = Token>>(
let tok = toks.next();
if devour_whitespace(toks) {
let prop = Style::parse_property(
&mut values.into_iter().peekable(),
&mut values.into_iter().peekmore(),
scope,
super_selector,
String::new(),
@ -555,7 +557,7 @@ pub(crate) fn eat_expr<I: Iterator<Item = Token>>(
devour_whitespace(toks);
// special edge case where there was no space between the colon
// in a style, e.g. `color:red`. todo: refactor
let mut v = values.into_iter().peekable();
let mut v = values.into_iter().peekmore();
devour_whitespace(&mut v);
if v.peek().is_none() {
devour_whitespace(toks);
@ -587,7 +589,7 @@ pub(crate) fn eat_expr<I: Iterator<Item = Token>>(
// special edge case where there was no space between the colon
// and no semicolon following the style
// in a style `color:red`. todo: refactor
let mut v = values.into_iter().peekable();
let mut v = values.into_iter().peekmore();
let property =
Style::parse_property(&mut v, scope, super_selector, String::new())?;
let value = Style::parse_value(&mut v, scope, super_selector)?;
@ -602,7 +604,7 @@ pub(crate) fn eat_expr<I: Iterator<Item = Token>>(
devour_whitespace(toks);
return Ok(Some(Spanned {
node: Expr::Selector(Selector::from_tokens(
&mut values.into_iter().peekable(),
&mut values.into_iter().peekmore(),
scope,
super_selector,
)?),
@ -713,7 +715,7 @@ pub(crate) fn eat_expr<I: Iterator<Item = Token>>(
Ok(None)
}
fn eat_interpolation<I: Iterator<Item = Token>>(toks: &mut Peekable<I>) -> Vec<Token> {
fn eat_interpolation<I: Iterator<Item = Token>>(toks: &mut PeekMoreIterator<I>) -> Vec<Token> {
let mut vals = Vec::new();
let mut n = 1;
for tok in toks {

View File

@ -1,5 +1,6 @@
use std::fmt::{self, Display};
use std::iter::Peekable;
use peekmore::PeekMoreIterator;
use codemap::Span;
@ -21,7 +22,7 @@ pub(crate) struct Attribute {
impl Attribute {
pub fn from_tokens<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
mut start: Span,

View File

@ -1,5 +1,6 @@
use std::fmt::{self, Display, Write};
use std::iter::Peekable;
use peekmore::{PeekMore, PeekMoreIterator};
use crate::error::SassResult;
use crate::scope::Scope;
@ -26,7 +27,7 @@ struct SelectorPart {
impl Display for SelectorPart {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let mut iter = self.inner.iter().peekable();
let mut iter = self.inner.iter().peekmore();
devour_whitespace(&mut iter);
while let Some(s) = iter.next() {
write!(f, "{}", s)?;
@ -176,7 +177,7 @@ fn is_selector_name_char(c: char) -> bool {
impl Selector {
pub fn from_tokens<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<Selector> {
@ -252,7 +253,7 @@ impl Selector {
tok
}));
let mut iter = sel_toks.into_iter().peekable();
let mut iter = sel_toks.into_iter().peekmore();
while let Some(tok) = iter.peek() {
inner.push(match tok.kind {
@ -360,7 +361,7 @@ impl Selector {
}
fn consume_pseudo_selector<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<SelectorKind> {
@ -378,7 +379,7 @@ impl Selector {
let mut inner_toks = read_until_closing_paren(toks);
inner_toks.pop();
let inner = Selector::from_tokens(
&mut inner_toks.into_iter().peekable(),
&mut inner_toks.into_iter().peekmore(),
scope,
super_selector,
)?;

View File

@ -1,4 +1,4 @@
use std::iter::Peekable;
use peekmore::PeekMoreIterator;
use codemap::Spanned;
@ -21,7 +21,7 @@ pub(crate) struct Style {
impl Style {
pub fn parse_property<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
super_property: String,
@ -48,7 +48,7 @@ impl Style {
}
pub fn parse_value<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<Spanned<Value>> {
@ -56,7 +56,7 @@ impl Style {
}
pub fn from_tokens<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
super_property: String,
@ -80,7 +80,7 @@ impl<'a> StyleParser<'a> {
pub(crate) fn parse_style_value<I: Iterator<Item = Token>>(
&self,
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
) -> SassResult<Spanned<Value>> {
devour_whitespace(toks);
@ -93,7 +93,7 @@ impl<'a> StyleParser<'a> {
pub(crate) fn eat_style_group<I: Iterator<Item = Token>>(
&self,
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
super_property: String,
scope: &Scope,
) -> SassResult<Expr> {
@ -199,7 +199,7 @@ impl<'a> StyleParser<'a> {
pub(crate) fn parse_property<I: Iterator<Item = Token>>(
&self,
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
mut super_property: String,
) -> SassResult<String> {
devour_whitespace(toks);

View File

@ -1,7 +1,9 @@
use std::iter::{Iterator, Peekable};
use std::iter::Iterator;
use codemap::{Span, Spanned};
use peekmore::{PeekMore, PeekMoreIterator};
use crate::common::QuoteKind;
use crate::error::SassResult;
use crate::selector::Selector;
@ -19,7 +21,7 @@ impl IsWhitespace for char {
}
pub(crate) fn devour_whitespace<I: Iterator<Item = W>, W: IsWhitespace>(
s: &mut Peekable<I>,
s: &mut PeekMoreIterator<I>,
) -> bool {
let mut found_whitespace = false;
while let Some(w) = s.peek() {
@ -37,7 +39,7 @@ pub(crate) trait IsComment {
}
pub(crate) fn devour_whitespace_or_comment<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
) -> SassResult<bool> {
let mut found_whitespace = false;
while let Some(tok) = toks.peek() {
@ -63,7 +65,7 @@ pub(crate) fn devour_whitespace_or_comment<I: Iterator<Item = Token>>(
}
pub(crate) fn parse_interpolation<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<Spanned<Value>> {
@ -95,7 +97,7 @@ impl VariableDecl {
//
// Does not consume the open curly brace
pub(crate) fn read_until_open_curly_brace<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
) -> Vec<Token> {
let mut val = Vec::new();
let mut n = 0;
@ -123,7 +125,7 @@ pub(crate) fn read_until_open_curly_brace<I: Iterator<Item = Token>>(
}
pub(crate) fn read_until_closing_curly_brace<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
) -> Vec<Token> {
let mut t = Vec::new();
let mut nesting = 0;
@ -161,7 +163,7 @@ pub(crate) fn read_until_closing_curly_brace<I: Iterator<Item = Token>>(
}
pub(crate) fn read_until_closing_quote<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
q: char,
) -> Vec<Token> {
let mut t = Vec::new();
@ -194,7 +196,7 @@ pub(crate) fn read_until_closing_quote<I: Iterator<Item = Token>>(
}
pub(crate) fn read_until_semicolon_or_closing_curly_brace<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
) -> Vec<Token> {
let mut t = Vec::new();
let mut nesting = 0;
@ -240,7 +242,7 @@ pub(crate) fn read_until_semicolon_or_closing_curly_brace<I: Iterator<Item = Tok
}
pub(crate) fn read_until_semicolon_or_open_or_closing_curly_brace<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
) -> Vec<Token> {
let mut t = Vec::new();
let mut nesting = 0;
@ -299,7 +301,7 @@ pub(crate) fn read_until_semicolon_or_open_or_closing_curly_brace<I: Iterator<It
}
pub(crate) fn eat_variable_value<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<VariableDecl> {
@ -308,7 +310,7 @@ pub(crate) fn eat_variable_value<I: Iterator<Item = Token>>(
let mut global = false;
let mut raw = read_until_semicolon_or_closing_curly_brace(toks)
.into_iter()
.peekable();
.peekmore();
if toks.peek().is_some() && toks.peek().unwrap().kind == ';' {
toks.next();
}
@ -348,7 +350,7 @@ pub(crate) fn eat_variable_value<I: Iterator<Item = Token>>(
}
fn ident_body<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
unit: bool,
mut span: Span,
) -> SassResult<Spanned<String>> {
@ -356,8 +358,8 @@ fn ident_body<I: Iterator<Item = Token>>(
while let Some(tok) = toks.peek() {
span = span.merge(tok.pos());
if unit && tok.kind == '-' {
todo!()
// Disallow `-` followed by a dot or a digit digit in units.
toks.next();
// var second = scanner.peekChar(1);
// if (second != null && (second == $dot || isDigit(second))) break;
// text.writeCharCode(scanner.readChar());
@ -374,7 +376,7 @@ fn ident_body<I: Iterator<Item = Token>>(
}
fn interpolated_ident_body<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
mut span: Span,
@ -419,7 +421,7 @@ fn is_name_start(c: char) -> bool {
}
fn escape<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
identifier_start: bool,
) -> SassResult<String> {
let mut value = 0;
@ -475,7 +477,7 @@ fn escape<I: Iterator<Item = Token>>(
}
pub(crate) fn eat_ident<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<Spanned<String>> {
@ -532,7 +534,7 @@ pub(crate) fn eat_ident<I: Iterator<Item = Token>>(
}
pub(crate) fn eat_ident_no_interpolation<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
unit: bool,
) -> SassResult<Spanned<String>> {
let mut span = toks.peek().unwrap().pos();
@ -569,7 +571,7 @@ pub(crate) fn eat_ident_no_interpolation<I: Iterator<Item = Token>>(
}
pub(crate) fn eat_number<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
) -> SassResult<Spanned<String>> {
let mut whole = String::new();
let mut span = if let Some(tok) = toks.peek() {
@ -621,7 +623,7 @@ pub(crate) fn eat_number<I: Iterator<Item = Token>>(
/// We only have to check for \n as the lexing step normalizes all newline characters
///
/// The newline is consumed
pub(crate) fn read_until_newline<I: Iterator<Item = Token>>(toks: &mut Peekable<I>) {
pub(crate) fn read_until_newline<I: Iterator<Item = Token>>(toks: &mut PeekMoreIterator<I>) {
for tok in toks {
if tok.kind == '\n' {
break;
@ -635,7 +637,7 @@ pub(crate) fn read_until_newline<I: Iterator<Item = Token>>(toks: &mut Peekable<
/// The entirety of the comment, including the ending "*/" is consumed.
/// Note that the ending "*/" is not included in the output.
pub(crate) fn eat_comment<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<Spanned<String>> {
@ -676,7 +678,7 @@ fn as_hex(c: u32) -> u32 {
}
pub(crate) fn parse_quoted_string<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
q: char,
super_selector: &Selector,
@ -753,7 +755,7 @@ pub(crate) fn parse_quoted_string<I: Iterator<Item = Token>>(
}
pub(crate) fn read_until_closing_paren<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
) -> Vec<Token> {
let mut v = Vec::new();
let mut scope = 0;
@ -781,7 +783,7 @@ pub(crate) fn read_until_closing_paren<I: Iterator<Item = Token>>(
}
pub(crate) fn read_until_closing_square_brace<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
) -> Vec<Token> {
let mut v = Vec::new();
let mut scope = 0;
@ -809,7 +811,7 @@ pub(crate) fn read_until_closing_square_brace<I: Iterator<Item = Token>>(
}
pub(crate) fn read_until_char<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
c: char,
) -> Vec<Token> {
let mut v = Vec::new();

View File

@ -1,4 +1,4 @@
use std::iter::Peekable;
use peekmore::PeekMoreIterator;
use crate::error::SassResult;
use crate::scope::Scope;
@ -7,7 +7,7 @@ use crate::utils::{devour_whitespace, parse_interpolation};
use crate::Token;
pub(crate) fn eat_calc_args<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<String> {
@ -57,7 +57,7 @@ pub(crate) fn is_special_function(s: &str) -> bool {
}
pub(crate) fn eat_progid<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<String> {

View File

@ -1,5 +1,5 @@
use std::convert::TryFrom;
use std::iter::{Iterator, Peekable};
use std::iter::Iterator;
use std::mem;
use num_bigint::BigInt;
@ -8,6 +8,8 @@ use num_traits::pow;
use codemap::{Span, Spanned};
use peekmore::{PeekMore, PeekMoreIterator};
use super::css_function::{eat_calc_args, eat_progid};
use crate::args::eat_call_args;
@ -30,7 +32,7 @@ use super::map::SassMap;
use super::number::Number;
fn parse_hex<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
mut span: Span,
@ -140,7 +142,7 @@ fn parse_paren(
return Ok(());
}
let paren_toks = &mut t.node.into_iter().peekable();
let paren_toks = &mut t.node.into_iter().peekmore();
let mut map = SassMap::new();
let key = Value::from_vec(read_until_char(paren_toks, ':'), scope, super_selector)?;
@ -188,7 +190,7 @@ fn parse_paren(
}
fn eat_op<I: Iterator<Item = IntermediateValue>>(
iter: &mut Peekable<I>,
iter: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
op: Spanned<Op>,
@ -300,7 +302,7 @@ fn eat_op<I: Iterator<Item = IntermediateValue>>(
}
fn single_value<I: Iterator<Item = IntermediateValue>>(
iter: &mut Peekable<I>,
iter: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
span: Span,
@ -363,7 +365,7 @@ fn single_value<I: Iterator<Item = IntermediateValue>>(
impl Value {
pub fn from_tokens<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<Spanned<Self>> {
@ -379,7 +381,7 @@ impl Value {
let mut last_was_whitespace = false;
let mut space_separated = Vec::new();
let mut comma_separated = Vec::new();
let mut iter = intermediate_values.into_iter().peekable();
let mut iter = intermediate_values.into_iter().peekmore();
while let Some(val) = iter.next() {
match val {
IntermediateValue::Value(v) => {
@ -484,11 +486,11 @@ impl Value {
scope: &Scope,
super_selector: &Selector,
) -> SassResult<Spanned<Value>> {
Self::from_tokens(&mut toks.into_iter().peekable(), scope, super_selector)
Self::from_tokens(&mut toks.into_iter().peekmore(), scope, super_selector)
}
fn ident<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<IntermediateValue> {
@ -583,7 +585,7 @@ impl Value {
}
fn parse_intermediate_value<I: Iterator<Item = Token>>(
toks: &mut Peekable<I>,
toks: &mut PeekMoreIterator<I>,
scope: &Scope,
super_selector: &Selector,
) -> SassResult<IntermediateValue> {