github.com/projectdiscovery/nuclei/v2@v2.9.15/pkg/protocols/common/utils/vardump/dump.go (about) 1 package vardump 2 3 import ( 4 "strconv" 5 "strings" 6 7 "github.com/projectdiscovery/nuclei/v2/pkg/types" 8 ) 9 10 // EnableVarDump enables var dump for debugging optionally 11 var EnableVarDump bool 12 13 // DumpVariables writes the truncated dump of variables to a string 14 // in a formatted key-value manner. 15 // 16 // The values are truncated to return 50 characters from start and end. 17 func DumpVariables(data map[string]interface{}) string { 18 var counter int 19 20 buffer := &strings.Builder{} 21 buffer.Grow(len(data) * 78) // grow buffer to an approximate size 22 23 builder := &strings.Builder{} 24 for k, v := range data { 25 valueString := types.ToString(v) 26 27 counter++ 28 if len(valueString) > 50 { 29 builder.Grow(56) 30 builder.WriteString(valueString[0:25]) 31 builder.WriteString(" .... ") 32 builder.WriteString(valueString[len(valueString)-25:]) 33 valueString = builder.String() 34 builder.Reset() 35 } 36 valueString = strings.ReplaceAll(strings.ReplaceAll(valueString, "\r", " "), "\n", " ") 37 38 buffer.WriteString("\t") 39 buffer.WriteString(strconv.Itoa(counter)) 40 buffer.WriteString(". ") 41 buffer.WriteString(k) 42 buffer.WriteString(" => ") 43 buffer.WriteString(valueString) 44 buffer.WriteString("\n") 45 } 46 final := buffer.String() 47 return final 48 }