From 22607fb0ef9c7e81db800ca980db8dd1259ad853 Mon Sep 17 00:00:00 2001 From: ConnorSkees <39542938+ConnorSkees@users.noreply.github.com> Date: Fri, 22 May 2020 22:28:38 -0400 Subject: [PATCH] CallArg::Named is backed by Identifier rather than String --- src/args.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/args.rs b/src/args.rs index a79adce..a3a87ca 100644 --- a/src/args.rs +++ b/src/args.rs @@ -4,6 +4,7 @@ use codemap::{Span, Spanned}; use peekmore::PeekMoreIterator; +use crate::common::Identifier; use crate::error::SassResult; use crate::scope::Scope; use crate::selector::Selector; @@ -35,14 +36,14 @@ pub(crate) struct CallArgs(HashMap>, Span); #[derive(Debug, Clone, Hash, Eq, PartialEq)] enum CallArg { - Named(String), + Named(Identifier), Positional(usize), } impl CallArg { pub fn position(&self) -> Result { match self { - Self::Named(ref name) => Err(name.clone()), + Self::Named(ref name) => Err(name.to_string()), Self::Positional(p) => Ok(*p), } } @@ -100,13 +101,13 @@ impl CallArgs { /// Get argument by name /// /// Removes the argument - pub fn get_named( + pub fn get_named>( &mut self, - val: String, + val: T, scope: &Scope, super_selector: &Selector, ) -> Option>> { - 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)), None => None, } @@ -368,7 +369,7 @@ pub(crate) fn eat_call_args>( if name.is_empty() { CallArg::Positional(args.len()) } else { - CallArg::Named(name.replace('_', "-")) + CallArg::Named(name.into()) }, val, ); @@ -396,7 +397,7 @@ pub(crate) fn eat_call_args>( if name.is_empty() { CallArg::Positional(args.len()) } else { - CallArg::Named(name.replace('_', "-")) + CallArg::Named(name.clone().into()) }, val.clone(), );