mirror of
https://github.com/k3s-io/k3s.git
synced 2024-06-07 19:41:36 +00:00
40 lines
887 B
Go
40 lines
887 B
Go
// Copyright 2013 ChaiShushan <chaishushan{AT}gmail.com>. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package gettext
|
|
|
|
import (
|
|
"regexp"
|
|
"runtime"
|
|
)
|
|
|
|
var (
|
|
reInit = regexp.MustCompile(`init·\d+$`) // main.init·1
|
|
reClosure = regexp.MustCompile(`func·\d+$`) // main.func·001
|
|
)
|
|
|
|
// caller types:
|
|
// runtime.goexit
|
|
// runtime.main
|
|
// main.init
|
|
// main.main
|
|
// main.init·1 -> main.init
|
|
// main.func·001 -> main.func
|
|
// code.google.com/p/gettext-go/gettext.TestCallerName
|
|
// ...
|
|
func callerName(skip int) string {
|
|
pc, _, _, ok := runtime.Caller(skip)
|
|
if !ok {
|
|
return ""
|
|
}
|
|
name := runtime.FuncForPC(pc).Name()
|
|
if reInit.MatchString(name) {
|
|
return reInit.ReplaceAllString(name, "init")
|
|
}
|
|
if reClosure.MatchString(name) {
|
|
return reClosure.ReplaceAllString(name, "func")
|
|
}
|
|
return name
|
|
}
|