From ae52d4aa1879749304072717831973399174ff04 Mon Sep 17 00:00:00 2001 From: astaxie Date: Thu, 17 Dec 2015 21:31:44 +0800 Subject: [PATCH] improve the splitPath --- tree.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tree.go b/tree.go index 2092016f..30108913 100644 --- a/tree.go +++ b/tree.go @@ -354,10 +354,22 @@ func (t *Tree) match(pattern string, wildcardValues []string, ctx *context.Conte } if runObject == nil { - segments := splitPath(pattern) wildcardValues = append(wildcardValues, seg) + start, i := 0, 0 + for ; i < len(pattern); i++ { + if pattern[i] == '/' { + if i != 0 && start < len(pattern) { + wildcardValues = append(wildcardValues, pattern[start:i]) + } + start = i + 1 + continue + } + } + if start > 0 { + wildcardValues = append(wildcardValues, pattern[start:i]) + } for _, l := range t.leaves { - if ok := l.match(append(wildcardValues, segments...), ctx); ok { + if ok := l.match(wildcardValues, ctx); ok { return l.runObject } }