glob/internal/debug/debug_enabled.go

65 lines
906 B
Go

// +build globdebug
package debug
import (
"fmt"
"os"
"strings"
)
const Enabled = true
var (
i = 0
prefix = map[int]string{}
)
func Logf(f string, args ...interface{}) {
if f != "" && prefix[i] != "" {
f = ": " + f
}
fmt.Fprint(os.Stderr,
strings.Repeat(" ", i),
fmt.Sprintf("(%d) ", i),
prefix[i],
fmt.Sprintf(f, args...),
"\n",
)
}
func Indexing(name, s string) func(int, []int) {
EnterPrefix("%s: index: %q", name, s)
return func(index int, segments []int) {
Logf("-> %d, %v", index, segments)
LeavePrefix()
}
}
func Matching(name, s string) func(bool) {
EnterPrefix("%s: match %q", name, s)
return func(ok bool) {
Logf("-> %t", ok)
LeavePrefix()
}
}
func EnterPrefix(s string, args ...interface{}) {
Enter()
prefix[i] = fmt.Sprintf(s, args...)
Logf("")
}
func LeavePrefix() {
prefix[i] = ""
Leave()
}
func Enter() {
i++
}
func Leave() {
i--
}