move miniwalker to parseutil package

This commit is contained in:
mappu 2020-04-15 19:05:55 +12:00
parent 739db2c444
commit 2fdd3a919c
2 changed files with 44 additions and 44 deletions

View File

@ -1,44 +0,0 @@
package main
import (
"fmt"
"github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/walker"
)
type miniWalker struct {
cb func(node.Node) error
lastErr error
}
func (mw *miniWalker) EnterNode(w walker.Walkable) bool {
n, ok := w.(node.Node)
if !ok {
mw.lastErr = fmt.Errorf("Tried to walk non-node '%t'", w)
return false
}
err := mw.cb(n)
if err != nil {
mw.lastErr = err
return false
}
return true
}
func (mw *miniWalker) LeaveNode(w walker.Walkable) {}
func (mw *miniWalker) EnterChildNode(key string, w walker.Walkable) {}
func (mw *miniWalker) LeaveChildNode(key string, w walker.Walkable) {}
func (mw *miniWalker) EnterChildList(key string, w walker.Walkable) {}
func (mw *miniWalker) LeaveChildList(key string, w walker.Walkable) {}
var _ walker.Visitor = &miniWalker{} // interface assertion
func walk(n node.Node, cb func(node.Node) error) error {
mw := miniWalker{cb: cb}
n.Walk(&mw)
return mw.lastErr
}

44
parseutil/SimpleWalker.go Normal file
View File

@ -0,0 +1,44 @@
package parseutil
import (
"fmt"
"github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/walker"
)
type simpleWalker struct {
cb func(node.Node) error
lastErr error
}
func (mw *simpleWalker) EnterNode(w walker.Walkable) bool {
n, ok := w.(node.Node)
if !ok {
mw.lastErr = fmt.Errorf("Tried to walk non-node '%t'", w)
return false
}
err := mw.cb(n)
if err != nil {
mw.lastErr = err
return false
}
return true
}
func (mw *simpleWalker) LeaveNode(w walker.Walkable) {}
func (mw *simpleWalker) EnterChildNode(key string, w walker.Walkable) {}
func (mw *simpleWalker) LeaveChildNode(key string, w walker.Walkable) {}
func (mw *simpleWalker) EnterChildList(key string, w walker.Walkable) {}
func (mw *simpleWalker) LeaveChildList(key string, w walker.Walkable) {}
var _ walker.Visitor = &simpleWalker{} // interface assertion
func SimpleWalk(n node.Node, cb func(node.Node) error) error {
mw := simpleWalker{cb: cb}
n.Walk(&mw)
return mw.lastErr
}