Merge pull request #2865 from cyqsimon/syntax-mapping-fix

Relax syntax mapping rule restrictions to allow brace expansion
This commit is contained in:
David Peter 2024-02-23 21:52:55 +01:00 committed by GitHub
commit e6e8f847be
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 5 deletions

View File

@ -26,6 +26,7 @@
- Pull in fix for unsafe-libyaml security advisory, see #2812 (@dtolnay) - Pull in fix for unsafe-libyaml security advisory, see #2812 (@dtolnay)
- Update git-version dependency to use Syn v2, see #2816 (@dtolnay) - Update git-version dependency to use Syn v2, see #2816 (@dtolnay)
- Update git2 dependency to v0.18.2, see #2852 (@eth-p) - Update git2 dependency to v0.18.2, see #2852 (@eth-p)
- Relax syntax mapping rule restrictions to allow brace expansion #2865 (@cyqsimon)
- Apply clippy fixes #2864 (@cyqsimon) - Apply clippy fixes #2864 (@cyqsimon)
## Syntaxes ## Syntaxes

View File

@ -53,14 +53,16 @@ struct Matcher(Vec<MatcherSegment>);
/// ///
/// Note that this implementation is rather strict: it will greedily interpret /// Note that this implementation is rather strict: it will greedily interpret
/// every valid environment variable replacement as such, then immediately /// every valid environment variable replacement as such, then immediately
/// hard-error if it finds a '$', '{', or '}' anywhere in the remaining text /// hard-error if it finds a '$' anywhere in the remaining text segments.
/// segments.
/// ///
/// The reason for this strictness is I currently cannot think of a valid reason /// The reason for this strictness is I currently cannot think of a valid reason
/// why you would ever need '$', '{', or '}' as plaintext in a glob pattern. /// why you would ever need '$' as plaintext in a glob pattern. Therefore any
/// Therefore any such occurrences are likely human errors. /// such occurrences are likely human errors.
/// ///
/// If we later discover some edge cases, it's okay to make it more permissive. /// If we later discover some edge cases, it's okay to make it more permissive.
///
/// Revision history:
/// - 2024-02-20: allow `{` and `}` (glob brace expansion)
impl FromStr for Matcher { impl FromStr for Matcher {
type Err = anyhow::Error; type Err = anyhow::Error;
fn from_str(s: &str) -> Result<Self, Self::Err> { fn from_str(s: &str) -> Result<Self, Self::Err> {
@ -106,7 +108,7 @@ impl FromStr for Matcher {
if non_empty_segments if non_empty_segments
.iter() .iter()
.filter_map(Seg::text) .filter_map(Seg::text)
.any(|t| t.contains(['$', '{', '}'])) .any(|t| t.contains('$'))
{ {
bail!(r#"Invalid matcher: "{s}""#); bail!(r#"Invalid matcher: "{s}""#);
} }