github.com/anchore/syft@v1.38.2/internal/string_helpers.go (about)

     1  package internal
     2  
     3  import "strings"
     4  
     5  // HasAnyOfPrefixes returns an indication if the given string has any of the given prefixes.
     6  func HasAnyOfPrefixes(input string, prefixes ...string) bool {
     7  	for _, prefix := range prefixes {
     8  		if strings.HasPrefix(input, prefix) {
     9  			return true
    10  		}
    11  	}
    12  
    13  	return false
    14  }
    15  
    16  // HasAnyOfSuffixes returns an indication if the given string has any of the given suffixes.
    17  func HasAnyOfSuffixes(input string, suffixes ...string) bool {
    18  	for _, suffix := range suffixes {
    19  		if strings.HasSuffix(input, suffix) {
    20  			return true
    21  		}
    22  	}
    23  
    24  	return false
    25  }
    26  
    27  func TruncateMiddleEllipsis(input string, maxLen int) string {
    28  	if len(input) <= maxLen {
    29  		return input
    30  	}
    31  	return input[:maxLen/2] + "..." + input[len(input)-(maxLen/2):]
    32  }
    33  
    34  func StringInSlice(a string, list []string) bool {
    35  	for _, b := range list {
    36  		if b == a {
    37  			return true
    38  		}
    39  	}
    40  	return false
    41  }
    42  
    43  func SplitAny(s string, seps string) []string {
    44  	splitter := func(r rune) bool {
    45  		return strings.ContainsRune(seps, r)
    46  	}
    47  	result := strings.FieldsFunc(s, splitter)
    48  	if len(result) == 0 {
    49  		return []string{s}
    50  	}
    51  	return result
    52  }