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

     1  package functions
     2  
     3  func Take(args ...interface{}) interface{} {
     4  	if len(args) != 2 {
     5  		return ""
     6  	}
     7  
     8  	count, ok := args[1].(int)
     9  	if !ok {
    10  		return ""
    11  	}
    12  	switch input := args[0].(type) {
    13  	case string:
    14  		if count > len(input) {
    15  			return input
    16  		}
    17  		return input[:count]
    18  	case interface{}:
    19  		switch iType := input.(type) {
    20  		case []int:
    21  			if count > len(iType) {
    22  				return iType
    23  			}
    24  			return iType[:count]
    25  		case []string:
    26  			if count > len(iType) {
    27  				return iType
    28  			}
    29  			return iType[:count]
    30  		case []bool:
    31  			if count > len(iType) {
    32  				return iType
    33  			}
    34  			return iType[:count]
    35  		case []float64:
    36  			if count > len(iType) {
    37  				return iType
    38  			}
    39  			return iType[:count]
    40  		case []interface{}:
    41  			if count > len(iType) {
    42  				return iType
    43  			}
    44  			return iType[:count]
    45  		}
    46  	}
    47  
    48  	return ""
    49  }