Rename n.path to n.prefix
diff --git a/tree.go b/tree.go
index 3ff6394..d768e04 100644
--- a/tree.go
+++ b/tree.go
@@ -39,7 +39,7 @@
)
type node struct {
- path string
+ prefix string
wildChild bool
nType nodeType
maxParams uint8
@@ -83,7 +83,7 @@
numParams := countParams(path)
// non-empty tree
- if len(n.path) > 0 || len(n.children) > 0 {
+ if len(n.prefix) > 0 || len(n.children) > 0 {
walk:
for {
// Update maxParams of the current node
@@ -95,15 +95,15 @@
// This also implies that the common prefix contains no ':' or '*'
// since the existing key can't contain those chars.
i := 0
- max := min(len(path), len(n.path))
- for i < max && path[i] == n.path[i] {
+ max := min(len(path), len(n.prefix))
+ for i < max && path[i] == n.prefix[i] {
i++
}
// Split edge
- if i < len(n.path) {
+ if i < len(n.prefix) {
child := node{
- path: n.path[i:],
+ prefix: n.prefix[i:],
wildChild: n.wildChild,
indices: n.indices,
children: n.children,
@@ -120,8 +120,8 @@
n.children = []*node{&child}
// []byte for proper unicode char conversion, see #65
- n.indices = string([]byte{n.path[i]})
- n.path = path[:i]
+ n.indices = string([]byte{n.prefix[i]})
+ n.prefix = path[:i]
n.handle = nil
n.wildChild = false
}
@@ -141,15 +141,15 @@
numParams--
// Check if the wildcard matches
- if len(path) >= len(n.path) && n.path == path[:len(n.path)] {
+ if len(path) >= len(n.prefix) && n.prefix == path[:len(n.prefix)] {
// check for longer wildcard, e.g. :name and :names
- if len(n.path) >= len(path) || path[len(n.path)] == '/' {
+ if len(n.prefix) >= len(path) || path[len(n.prefix)] == '/' {
continue walk
}
}
panic("path segment '" + path +
- "' conflicts with existing wildcard '" + n.path +
+ "' conflicts with existing wildcard '" + n.prefix +
"' in path '" + fullPath + "'")
}
@@ -236,7 +236,7 @@
if c == ':' { // param
// split path at the beginning of the wildcard
if i > 0 {
- n.path = path[offset:i]
+ n.prefix = path[offset:i]
offset = i
}
@@ -253,7 +253,7 @@
// if the path doesn't end with the wildcard, then there
// will be another non-wildcard subpath starting with '/'
if end < max {
- n.path = path[offset:end]
+ n.prefix = path[offset:end]
offset = end
child := &node{
@@ -269,7 +269,7 @@
panic("catch-all routes are only allowed at the end of the path in path '" + fullPath + "'")
}
- if len(n.path) > 0 && n.path[len(n.path)-1] == '/' {
+ if len(n.prefix) > 0 && n.prefix[len(n.prefix)-1] == '/' {
panic("catch-all conflicts with existing handle for the path segment root in path '" + fullPath + "'")
}
@@ -279,7 +279,7 @@
panic("no / before catch-all in path '" + fullPath + "'")
}
- n.path = path[offset:i]
+ n.prefix = path[offset:i]
// first node: catchAll node with empty path
child := &node{
@@ -294,7 +294,7 @@
// second node: node holding the variable
child = &node{
- path: path[i:],
+ prefix: path[i:],
nType: catchAll,
maxParams: 1,
handle: handle,
@@ -307,7 +307,7 @@
}
// insert remaining path part and handle to the leaf
- n.path = path[offset:]
+ n.prefix = path[offset:]
n.handle = handle
}
@@ -319,9 +319,9 @@
func (n *node) getValue(path string, psp *Params) (handle Handle, tsr bool) {
walk: // Outer loop for walking the tree
for {
- if len(path) > len(n.path) {
- if path[:len(n.path)] == n.path {
- path = path[len(n.path):]
+ if len(path) > len(n.prefix) {
+ if path[:len(n.prefix)] == n.prefix {
+ path = path[len(n.prefix):]
// If this node does not have a wildcard (param or catchAll)
// child, we can just look up the next child node and continue
// to walk down the tree
@@ -356,7 +356,7 @@
if psp != nil {
i := len(*psp)
*psp = (*psp)[:i+1] // expand slice within preallocated capacity
- (*psp)[i].Key = n.path[1:]
+ (*psp)[i].Key = n.prefix[1:]
(*psp)[i].Value = path[:end]
}
@@ -379,7 +379,7 @@
// No handle found. Check if a handle for this path + a
// trailing slash exists for TSR recommendation
n = n.children[0]
- tsr = (n.path == "/" && n.handle != nil)
+ tsr = (n.prefix == "/" && n.handle != nil)
}
return
@@ -389,7 +389,7 @@
if psp != nil {
i := len(*psp)
*psp = (*psp)[:i+1] // expand slice within preallocated capacity
- (*psp)[i].Key = n.path[2:]
+ (*psp)[i].Key = n.prefix[2:]
(*psp)[i].Value = path
}
@@ -400,7 +400,7 @@
panic("invalid node type")
}
}
- } else if path == n.path {
+ } else if path == n.prefix {
// We should have reached the node containing the handle.
// Check if this node has a handle registered.
if handle = n.handle; handle != nil {
@@ -412,7 +412,7 @@
for i := 0; i < len(n.indices); i++ {
if n.indices[i] == '/' {
n = n.children[i]
- tsr = (len(n.path) == 1 && n.handle != nil) ||
+ tsr = (len(n.prefix) == 1 && n.handle != nil) ||
(n.nType == catchAll && n.children[0].handle != nil)
return
}
@@ -424,8 +424,8 @@
// Nothing found. We can recommend to redirect to the same URL with an
// extra trailing slash if a leaf exists for that path
tsr = (path == "/") ||
- (len(n.path) == len(path)+1 && n.path[len(path)] == '/' &&
- path == n.path[:len(n.path)-1] && n.handle != nil)
+ (len(n.prefix) == len(path)+1 && n.prefix[len(path)] == '/' &&
+ path == n.prefix[:len(n.prefix)-1] && n.handle != nil)
return
}
}
@@ -438,9 +438,9 @@
ciPath = make([]byte, 0, len(path)+1) // preallocate enough memory
// Outer loop for walking the tree
- for len(path) >= len(n.path) && strings.ToLower(path[:len(n.path)]) == strings.ToLower(n.path) {
- path = path[len(n.path):]
- ciPath = append(ciPath, n.path...)
+ for len(path) >= len(n.prefix) && strings.ToLower(path[:len(n.prefix)]) == strings.ToLower(n.prefix) {
+ path = path[len(n.prefix):]
+ ciPath = append(ciPath, n.prefix...)
if len(path) > 0 {
// If this node does not have a wildcard (param or catchAll) child,
@@ -498,7 +498,7 @@
// No handle found. Check if a handle for this path + a
// trailing slash exists
n = n.children[0]
- if n.path == "/" && n.handle != nil {
+ if n.prefix == "/" && n.handle != nil {
return append(ciPath, '/'), true
}
}
@@ -523,7 +523,7 @@
for i := 0; i < len(n.indices); i++ {
if n.indices[i] == '/' {
n = n.children[i]
- if (len(n.path) == 1 && n.handle != nil) ||
+ if (len(n.prefix) == 1 && n.handle != nil) ||
(n.nType == catchAll && n.children[0].handle != nil) {
return append(ciPath, '/'), true
}
@@ -541,10 +541,10 @@
if path == "/" {
return ciPath, true
}
- if len(path)+1 == len(n.path) && n.path[len(path)] == '/' &&
- strings.ToLower(path) == strings.ToLower(n.path[:len(path)]) &&
+ if len(path)+1 == len(n.prefix) && n.prefix[len(path)] == '/' &&
+ strings.ToLower(path) == strings.ToLower(n.prefix[:len(path)]) &&
n.handle != nil {
- return append(ciPath, n.path...), true
+ return append(ciPath, n.prefix...), true
}
}
return
diff --git a/tree_test.go b/tree_test.go
index 187b349..c0be57c 100644
--- a/tree_test.go
+++ b/tree_test.go
@@ -13,8 +13,8 @@
)
func printChildren(n *node, prefix string) {
- fmt.Printf(" %02d:%02d %s%s[%d] %v %t %d \r\n", n.priority, n.maxParams, prefix, n.path, len(n.children), n.handle, n.wildChild, n.nType)
- for l := len(n.path); l > 0; l-- {
+ fmt.Printf(" %02d:%02d %s%s[%d] %v %t %d \r\n", n.priority, n.maxParams, prefix, n.prefix, len(n.children), n.handle, n.wildChild, n.nType)
+ for l := len(n.prefix); l > 0; l-- {
prefix += " "
}
for _, child := range n.children {
@@ -80,7 +80,7 @@
if n.priority != prio {
t.Errorf(
"priority mismatch for node '%s': is %d, should be %d",
- n.path, n.priority, prio,
+ n.prefix, n.priority, prio,
)
}
@@ -102,7 +102,7 @@
if n.maxParams != maxParams {
t.Errorf(
"maxParams mismatch for node '%s': is %d, should be %d",
- n.path, n.maxParams, maxParams,
+ n.prefix, n.maxParams, maxParams,
)
}