diff --git a/crates/nu-protocol/src/engine/engine_state.rs b/crates/nu-protocol/src/engine/engine_state.rs index 768eab28d7..0d261355f9 100644 --- a/crates/nu-protocol/src/engine/engine_state.rs +++ b/crates/nu-protocol/src/engine/engine_state.rs @@ -14,6 +14,7 @@ use crate::{ use fancy_regex::Regex; use lru::LruCache; use nu_path::AbsolutePathBuf; +use nu_utils::IgnoreCaseExt; use std::{ collections::HashMap, num::NonZeroUsize, @@ -466,15 +467,10 @@ impl EngineState { } pub fn get_env_var_insensitive(&self, name: &str) -> Option<&Value> { - let name_lower = name.to_lowercase(); - for overlay_id in self.scope.active_overlays.iter().rev() { let overlay_name = String::from_utf8_lossy(self.get_overlay_name(*overlay_id)); if let Some(env_vars) = self.env_vars.get(overlay_name.as_ref()) { - if let Some(v) = env_vars - .iter() - .find(|(k, _)| k.to_lowercase() == name_lower) - { + if let Some(v) = env_vars.iter().find(|(k, _)| k.eq_ignore_case(name)) { return Some(v.1); } } diff --git a/crates/nu-protocol/src/engine/stack.rs b/crates/nu-protocol/src/engine/stack.rs index 76e28180df..be424c526f 100644 --- a/crates/nu-protocol/src/engine/stack.rs +++ b/crates/nu-protocol/src/engine/stack.rs @@ -5,6 +5,7 @@ use crate::{ }, Config, IntoValue, OutDest, ShellError, Span, Value, VarId, ENV_VARIABLE_ID, NU_VARIABLE_ID, }; +use nu_utils::IgnoreCaseExt; use std::{ collections::{HashMap, HashSet}, fs::File, @@ -485,15 +486,10 @@ impl Stack { engine_state: &'a EngineState, name: &str, ) -> Option<&'a Value> { - let name_lower = name.to_lowercase(); - for scope in self.env_vars.iter().rev() { for active_overlay in self.active_overlays.iter().rev() { if let Some(env_vars) = scope.get(active_overlay) { - if let Some(v) = env_vars - .iter() - .find(|(k, _)| k.to_lowercase() == name_lower) - { + if let Some(v) = env_vars.iter().find(|(k, _)| k.eq_ignore_case(name)) { return Some(v.1); } } @@ -502,17 +498,14 @@ impl Stack { for active_overlay in self.active_overlays.iter().rev() { let is_hidden = if let Some(env_hidden) = self.env_hidden.get(active_overlay) { - env_hidden.iter().any(|k| k.to_lowercase() == name_lower) + env_hidden.iter().any(|k| k.eq_ignore_case(name)) } else { false }; if !is_hidden { if let Some(env_vars) = engine_state.env_vars.get(active_overlay) { - if let Some(v) = env_vars - .iter() - .find(|(k, _)| k.to_lowercase() == name_lower) - { + if let Some(v) = env_vars.iter().find(|(k, _)| k.eq_ignore_case(name)) { return Some(v.1); } }