use eq_ignore_case vs to_lowercase

This commit is contained in:
Darren Schroeder
2024-11-20 13:35:46 -06:00
parent cf1b8f46eb
commit 7661104b19
2 changed files with 6 additions and 17 deletions

View File

@ -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);
}
}

View File

@ -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);
}
}