Files
kubesphere/vendor/github.com/open-policy-agent/opa/internal/ir/pretty.go
hongming 9769357005 update
Signed-off-by: hongming <talonwan@yunify.com>
2020-03-20 02:16:11 +08:00

45 lines
837 B
Go

// Copyright 2018 The OPA Authors. All rights reserved.
// Use of this source code is governed by an Apache2
// license that can be found in the LICENSE file.
package ir
import (
"fmt"
"io"
"strings"
)
// Pretty writes a human-readable representation of an IR object to w.
func Pretty(w io.Writer, x interface{}) {
pp := &prettyPrinter{
depth: -1,
w: w,
}
Walk(pp, x)
}
type prettyPrinter struct {
depth int
w io.Writer
}
func (pp *prettyPrinter) Before(x interface{}) {
pp.depth++
}
func (pp *prettyPrinter) After(x interface{}) {
pp.depth--
}
func (pp *prettyPrinter) Visit(x interface{}) (Visitor, error) {
pp.writeIndent("%T %+v", x, x)
return pp, nil
}
func (pp *prettyPrinter) writeIndent(f string, a ...interface{}) {
pad := strings.Repeat("| ", pp.depth)
fmt.Fprintf(pp.w, pad+f+"\n", a...)
}