mirror of
https://github.com/clap-rs/clap
synced 2025-03-04 23:37:32 +00:00
fix: Allow unicode aware case insensitivity
In #2985, I noticed #2834 was incomplete, there were case-insensitive comparisons we were doing without being unicode aware (when compile options are set). The downside is that each comparison will require a UTF-8 validation. These seem to be in more of corners of the API, rather than in common calls in common usages, so hopefully that isn't too much of a problem.
This commit is contained in:
parent
879dd23963
commit
4b0048666a
1 changed files with 3 additions and 1 deletions
|
@ -5,6 +5,7 @@ use std::{
|
|||
slice::Iter,
|
||||
};
|
||||
|
||||
use crate::util::eq_ignore_case;
|
||||
use crate::INTERNAL_ERROR_MSG;
|
||||
|
||||
// TODO: Maybe make this public?
|
||||
|
@ -127,7 +128,8 @@ impl MatchedArg {
|
|||
pub(crate) fn contains_val(&self, val: &str) -> bool {
|
||||
self.vals_flatten().any(|v| {
|
||||
if self.case_insensitive {
|
||||
v.eq_ignore_ascii_case(val)
|
||||
// If `v` isn't utf8, it can't match `val`, so `OsStr::to_str` should be fine
|
||||
v.to_str().map_or(false, |v| eq_ignore_case(v, val))
|
||||
} else {
|
||||
OsString::as_os_str(v) == OsStr::new(val)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue