mirror of
				https://github.com/sharkdp/bat.git
				synced 2025-11-04 09:01:56 +00:00 
			
		
		
		
	Relax syntax mapping rule restrictions to allow brace expansion
This commit is contained in:
		@@ -53,14 +53,16 @@ struct Matcher(Vec<MatcherSegment>);
 | 
			
		||||
///
 | 
			
		||||
/// Note that this implementation is rather strict: it will greedily interpret
 | 
			
		||||
/// every valid environment variable replacement as such, then immediately
 | 
			
		||||
/// hard-error if it finds a '$', '{', or '}' anywhere in the remaining text
 | 
			
		||||
/// segments.
 | 
			
		||||
/// hard-error if it finds a '$' anywhere in the remaining text segments.
 | 
			
		||||
///
 | 
			
		||||
/// 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.
 | 
			
		||||
/// Therefore any such occurrences are likely human errors.
 | 
			
		||||
/// why you would ever need '$' as plaintext in a glob pattern. Therefore any
 | 
			
		||||
/// such occurrences are likely human errors.
 | 
			
		||||
///
 | 
			
		||||
/// 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 {
 | 
			
		||||
    type Err = anyhow::Error;
 | 
			
		||||
    fn from_str(s: &str) -> Result<Self, Self::Err> {
 | 
			
		||||
@@ -106,7 +108,7 @@ impl FromStr for Matcher {
 | 
			
		||||
        if non_empty_segments
 | 
			
		||||
            .iter()
 | 
			
		||||
            .filter_map(Seg::text)
 | 
			
		||||
            .any(|t| t.contains(['$', '{', '}']))
 | 
			
		||||
            .any(|t| t.contains('$'))
 | 
			
		||||
        {
 | 
			
		||||
            bail!(r#"Invalid matcher: "{s}""#);
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user