move module variable parsing to module file
This commit is contained in:
parent
438abe52be
commit
a7ccb4d6d3
@ -11,7 +11,6 @@ use crate::{
|
|||||||
AtRuleKind, SupportsRule, UnknownAtRule,
|
AtRuleKind, SupportsRule, UnknownAtRule,
|
||||||
},
|
},
|
||||||
builtin::modules::{ModuleConfig, Modules},
|
builtin::modules::{ModuleConfig, Modules},
|
||||||
common::Identifier,
|
|
||||||
error::SassResult,
|
error::SassResult,
|
||||||
scope::{Scope, Scopes},
|
scope::{Scope, Scopes},
|
||||||
selector::{
|
selector::{
|
||||||
@ -133,41 +132,6 @@ impl<'a> Parser<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_module_variable_redeclaration(&mut self, module: Identifier) -> SassResult<()> {
|
|
||||||
let variable = self
|
|
||||||
.parse_identifier_no_interpolation(false)?
|
|
||||||
.map_node(|n| n.into());
|
|
||||||
|
|
||||||
self.whitespace_or_comment();
|
|
||||||
self.expect_char(':')?;
|
|
||||||
|
|
||||||
let VariableValue {
|
|
||||||
val_toks,
|
|
||||||
global,
|
|
||||||
default,
|
|
||||||
} = self.parse_variable_value()?;
|
|
||||||
|
|
||||||
if global {
|
|
||||||
return Err((
|
|
||||||
"!global isn't allowed for variables in other modules.",
|
|
||||||
variable.span,
|
|
||||||
)
|
|
||||||
.into());
|
|
||||||
}
|
|
||||||
|
|
||||||
if default {
|
|
||||||
return Ok(());
|
|
||||||
}
|
|
||||||
|
|
||||||
let value = self.parse_value_from_vec(val_toks, true)?;
|
|
||||||
|
|
||||||
self.modules
|
|
||||||
.get_mut(module, variable.span)?
|
|
||||||
.update_var(variable, value.node)?;
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn parse_stmt(&mut self) -> SassResult<Vec<Stmt>> {
|
fn parse_stmt(&mut self) -> SassResult<Vec<Stmt>> {
|
||||||
let mut stmts = Vec::new();
|
let mut stmts = Vec::new();
|
||||||
while let Some(Token { kind, pos }) = self.toks.peek() {
|
while let Some(Token { kind, pos }) = self.toks.peek() {
|
||||||
|
@ -9,9 +9,10 @@ use crate::{
|
|||||||
declare_module_color, declare_module_list, declare_module_map, declare_module_math,
|
declare_module_color, declare_module_list, declare_module_map, declare_module_math,
|
||||||
declare_module_meta, declare_module_selector, declare_module_string, Module, ModuleConfig,
|
declare_module_meta, declare_module_selector, declare_module_string, Module, ModuleConfig,
|
||||||
},
|
},
|
||||||
|
common::Identifier,
|
||||||
error::SassResult,
|
error::SassResult,
|
||||||
lexer::Lexer,
|
lexer::Lexer,
|
||||||
parse::{common::Comment, Parser, Stmt},
|
parse::{common::Comment, Parser, Stmt, VariableValue},
|
||||||
scope::Scope,
|
scope::Scope,
|
||||||
utils::peek_ident_no_interpolation,
|
utils::peek_ident_no_interpolation,
|
||||||
Token,
|
Token,
|
||||||
@ -248,4 +249,42 @@ impl<'a> Parser<'a> {
|
|||||||
|
|
||||||
Ok(comments)
|
Ok(comments)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(super) fn parse_module_variable_redeclaration(
|
||||||
|
&mut self,
|
||||||
|
module: Identifier,
|
||||||
|
) -> SassResult<()> {
|
||||||
|
let variable = self
|
||||||
|
.parse_identifier_no_interpolation(false)?
|
||||||
|
.map_node(|n| n.into());
|
||||||
|
|
||||||
|
self.whitespace_or_comment();
|
||||||
|
self.expect_char(':')?;
|
||||||
|
|
||||||
|
let VariableValue {
|
||||||
|
val_toks,
|
||||||
|
global,
|
||||||
|
default,
|
||||||
|
} = self.parse_variable_value()?;
|
||||||
|
|
||||||
|
if global {
|
||||||
|
return Err((
|
||||||
|
"!global isn't allowed for variables in other modules.",
|
||||||
|
variable.span,
|
||||||
|
)
|
||||||
|
.into());
|
||||||
|
}
|
||||||
|
|
||||||
|
if default {
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
|
||||||
|
let value = self.parse_value_from_vec(val_toks, true)?;
|
||||||
|
|
||||||
|
self.modules
|
||||||
|
.get_mut(module, variable.span)?
|
||||||
|
.update_var(variable, value.node)?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user