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

     1  package functions
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  )
     7  
     8  func Format(args ...interface{}) interface{} {
     9  	formatter := generateFormatterString(args...)
    10  
    11  	return fmt.Sprintf(formatter, args[1:]...)
    12  }
    13  
    14  func generateFormatterString(args ...interface{}) string {
    15  
    16  	formatter, ok := args[0].(string)
    17  	if !ok {
    18  		return ""
    19  	}
    20  	for i, arg := range args[1:] {
    21  		switch arg.(type) {
    22  		case string:
    23  			formatter = strings.ReplaceAll(formatter, fmt.Sprintf("{%d}", i), "%s")
    24  		case int, int32, int64, uint, uint32, uint64:
    25  			formatter = strings.ReplaceAll(formatter, fmt.Sprintf("{%d}", i), "%d")
    26  		case float64, float32:
    27  			formatter = strings.ReplaceAll(formatter, fmt.Sprintf("{%d}", i), "%f")
    28  		}
    29  	}
    30  	return formatter
    31  }