github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/scanners/azure/functions/split.go (about)

     1  package functions
     2  
     3  import "strings"
     4  
     5  func Split(args ...interface{}) interface{} {
     6  	if len(args) != 2 {
     7  		return ""
     8  	}
     9  
    10  	input, ok := args[0].(string)
    11  	if !ok {
    12  		return ""
    13  	}
    14  
    15  	switch separator := args[1].(type) {
    16  	case string:
    17  		return strings.Split(input, separator)
    18  	case interface{}:
    19  		switch separator := separator.(type) {
    20  		case []string:
    21  			m := make(map[rune]int)
    22  			for _, r := range separator {
    23  				r := rune(r[0])
    24  				m[r] = 1
    25  			}
    26  
    27  			splitter := func(r rune) bool {
    28  				return m[r] == 1
    29  			}
    30  
    31  			return strings.FieldsFunc(input, splitter)
    32  		}
    33  
    34  	}
    35  	return []string{}
    36  }