mirror of
https://github.com/fumiama/WireGold.git
synced 2025-09-27 03:25:54 +08:00
53 lines
909 B
Go
53 lines
909 B
Go
package file
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"runtime"
|
|
"strings"
|
|
)
|
|
|
|
func Header() string {
|
|
file, fn := fileFuncName(2)
|
|
sb := strings.Builder{}
|
|
sb.WriteString("[")
|
|
sb.WriteString(file)
|
|
sb.WriteString("] ")
|
|
sb.WriteString(fn)
|
|
return sb.String()
|
|
}
|
|
|
|
func fileFuncName(skip int) (string, string) {
|
|
pc, file, _, ok := runtime.Caller(skip)
|
|
if !ok {
|
|
return "unknown", "unknown"
|
|
}
|
|
fn := runtime.FuncForPC(pc).Name()
|
|
i := strings.LastIndex(fn, "/")
|
|
fn = fn[i+1:]
|
|
i = strings.LastIndex(file, "/")
|
|
if i < 0 {
|
|
i = strings.LastIndex(file, "\\")
|
|
if i < 0 {
|
|
return file, fn
|
|
}
|
|
}
|
|
nm := file[i+1:]
|
|
if len(nm) == 0 {
|
|
return file, fn
|
|
}
|
|
i = strings.LastIndex(nm, ".")
|
|
if i <= 0 {
|
|
return nm, fn
|
|
}
|
|
return nm[:i], fn
|
|
}
|
|
|
|
func ToLimitHexString(data []byte, bound int) string {
|
|
endl := "..."
|
|
if len(data) < bound {
|
|
bound = len(data)
|
|
endl = "."
|
|
}
|
|
return hex.EncodeToString(data[:bound]) + endl
|
|
}
|