CallArg::Named is backed by Identifier rather than String
This commit is contained in:
parent
d4acb3f014
commit
22607fb0ef
15
src/args.rs
15
src/args.rs
@ -4,6 +4,7 @@ use codemap::{Span, Spanned};
|
|||||||
|
|
||||||
use peekmore::PeekMoreIterator;
|
use peekmore::PeekMoreIterator;
|
||||||
|
|
||||||
|
use crate::common::Identifier;
|
||||||
use crate::error::SassResult;
|
use crate::error::SassResult;
|
||||||
use crate::scope::Scope;
|
use crate::scope::Scope;
|
||||||
use crate::selector::Selector;
|
use crate::selector::Selector;
|
||||||
@ -35,14 +36,14 @@ pub(crate) struct CallArgs(HashMap<CallArg, Vec<Token>>, Span);
|
|||||||
|
|
||||||
#[derive(Debug, Clone, Hash, Eq, PartialEq)]
|
#[derive(Debug, Clone, Hash, Eq, PartialEq)]
|
||||||
enum CallArg {
|
enum CallArg {
|
||||||
Named(String),
|
Named(Identifier),
|
||||||
Positional(usize),
|
Positional(usize),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl CallArg {
|
impl CallArg {
|
||||||
pub fn position(&self) -> Result<usize, String> {
|
pub fn position(&self) -> Result<usize, String> {
|
||||||
match self {
|
match self {
|
||||||
Self::Named(ref name) => Err(name.clone()),
|
Self::Named(ref name) => Err(name.to_string()),
|
||||||
Self::Positional(p) => Ok(*p),
|
Self::Positional(p) => Ok(*p),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -100,13 +101,13 @@ impl CallArgs {
|
|||||||
/// Get argument by name
|
/// Get argument by name
|
||||||
///
|
///
|
||||||
/// Removes the argument
|
/// Removes the argument
|
||||||
pub fn get_named(
|
pub fn get_named<T: Into<Identifier>>(
|
||||||
&mut self,
|
&mut self,
|
||||||
val: String,
|
val: T,
|
||||||
scope: &Scope,
|
scope: &Scope,
|
||||||
super_selector: &Selector,
|
super_selector: &Selector,
|
||||||
) -> Option<SassResult<Spanned<Value>>> {
|
) -> Option<SassResult<Spanned<Value>>> {
|
||||||
match self.0.remove(&CallArg::Named(val)) {
|
match self.0.remove(&CallArg::Named(val.into())) {
|
||||||
Some(v) => Some(Value::from_vec(v, scope, super_selector)),
|
Some(v) => Some(Value::from_vec(v, scope, super_selector)),
|
||||||
None => None,
|
None => None,
|
||||||
}
|
}
|
||||||
@ -368,7 +369,7 @@ pub(crate) fn eat_call_args<I: Iterator<Item = Token>>(
|
|||||||
if name.is_empty() {
|
if name.is_empty() {
|
||||||
CallArg::Positional(args.len())
|
CallArg::Positional(args.len())
|
||||||
} else {
|
} else {
|
||||||
CallArg::Named(name.replace('_', "-"))
|
CallArg::Named(name.into())
|
||||||
},
|
},
|
||||||
val,
|
val,
|
||||||
);
|
);
|
||||||
@ -396,7 +397,7 @@ pub(crate) fn eat_call_args<I: Iterator<Item = Token>>(
|
|||||||
if name.is_empty() {
|
if name.is_empty() {
|
||||||
CallArg::Positional(args.len())
|
CallArg::Positional(args.len())
|
||||||
} else {
|
} else {
|
||||||
CallArg::Named(name.replace('_', "-"))
|
CallArg::Named(name.clone().into())
|
||||||
},
|
},
|
||||||
val.clone(),
|
val.clone(),
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user