mirror of
https://github.com/coredns/coredns.git
synced 2025-12-08 19:35:10 -05:00
Remove the word middleware (#1067)
* Rename middleware to plugin first pass; mostly used 'sed', few spots where I manually changed text. This still builds a coredns binary. * fmt error * Rename AddMiddleware to AddPlugin * Readd AddMiddleware to remain backwards compat
This commit is contained in:
62
plugin/file/tree/print.go
Normal file
62
plugin/file/tree/print.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package tree
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Print prints a Tree. Main use is to aid in debugging.
|
||||
func (t *Tree) Print() {
|
||||
if t.Root == nil {
|
||||
fmt.Println("<nil>")
|
||||
}
|
||||
t.Root.print()
|
||||
}
|
||||
|
||||
func (n *Node) print() {
|
||||
q := newQueue()
|
||||
q.push(n)
|
||||
|
||||
nodesInCurrentLevel := 1
|
||||
nodesInNextLevel := 0
|
||||
|
||||
for !q.empty() {
|
||||
do := q.pop()
|
||||
nodesInCurrentLevel--
|
||||
|
||||
if do != nil {
|
||||
fmt.Print(do.Elem.Name(), " ")
|
||||
q.push(do.Left)
|
||||
q.push(do.Right)
|
||||
nodesInNextLevel += 2
|
||||
}
|
||||
if nodesInCurrentLevel == 0 {
|
||||
fmt.Println()
|
||||
}
|
||||
nodesInCurrentLevel = nodesInNextLevel
|
||||
nodesInNextLevel = 0
|
||||
}
|
||||
fmt.Println()
|
||||
}
|
||||
|
||||
type queue []*Node
|
||||
|
||||
// newQueue returns a new queue.
|
||||
func newQueue() queue {
|
||||
q := queue([]*Node{})
|
||||
return q
|
||||
}
|
||||
|
||||
// push pushes n to the end of the queue.
|
||||
func (q *queue) push(n *Node) {
|
||||
*q = append(*q, n)
|
||||
}
|
||||
|
||||
// pop pops the first element off the queue.
|
||||
func (q *queue) pop() *Node {
|
||||
n := (*q)[0]
|
||||
*q = (*q)[1:]
|
||||
return n
|
||||
}
|
||||
|
||||
// empty returns true when the queue contains zero nodes.
|
||||
func (q *queue) empty() bool {
|
||||
return len(*q) == 0
|
||||
}
|
||||
Reference in New Issue
Block a user