3434const (
3535 skind kind = iota
3636 pkind
37- mkind
37+ akind
3838)
3939
4040func NewRouter (e * Echo ) * Router {
@@ -84,7 +84,7 @@ func (r *Router) Add(method, path string, h Handler, e *Echo) {
8484 } else if path [i ] == '*' {
8585 r .insert (method , path [:i ], nil , skind , "" , nil , e )
8686 pnames = append (pnames , "_*" )
87- r .insert (method , path [:i + 1 ], h , mkind , ppath , pnames , e )
87+ r .insert (method , path [:i + 1 ], h , akind , ppath , pnames , e )
8888 return
8989 }
9090 }
@@ -295,7 +295,7 @@ func (r *Router) Find(method, path string, context Context) {
295295 ns string // Next search
296296 )
297297
298- // Search order static > param > match- any
298+ // Search order static > param > any
299299 for {
300300 if search == "" {
301301 goto End
@@ -325,21 +325,19 @@ func (r *Router) Find(method, path string, context Context) {
325325 search = ns
326326 if nk == pkind {
327327 goto Param
328- } else if nk == mkind {
329- goto MatchAny
330- } else {
331- // Not found
332- return
328+ } else if nk == akind {
329+ goto Any
333330 }
331+ // Not found
332+ return
334333 }
335334
336335 if search == "" {
337336 goto End
338337 }
339338
340339 // Static node
341- c = cn .findChild (search [0 ], skind )
342- if c != nil {
340+ if c = cn .findChild (search [0 ], skind ); c != nil {
343341 // Save next
344342 if cn .label == '/' {
345343 nk = pkind
@@ -352,11 +350,10 @@ func (r *Router) Find(method, path string, context Context) {
352350
353351 // Param node
354352 Param:
355- c = cn .findChildByKind (pkind )
356- if c != nil {
353+ if c = cn .findChildByKind (pkind ); c != nil {
357354 // Save next
358355 if cn .label == '/' {
359- nk = mkind
356+ nk = akind
360357 nn = cn
361358 ns = search
362359 }
@@ -370,10 +367,19 @@ func (r *Router) Find(method, path string, context Context) {
370367 continue
371368 }
372369
373- // Match-any node
374- MatchAny:
375- // c = cn.getChild()
376- if cn = cn .findChildByKind (mkind ); cn == nil {
370+ // Any node
371+ Any:
372+ if cn = cn .findChildByKind (akind ); cn == nil {
373+ if nn != nil {
374+ cn = nn
375+ nn = nil // Next
376+ search = ns
377+ if nk == pkind {
378+ goto Param
379+ } else if nk == akind {
380+ goto Any
381+ }
382+ }
377383 // Not found
378384 return
379385 }
390396 if ctx .handler == nil {
391397 ctx .handler = cn .check405 ()
392398
393- // Dig further for match- any, might have an empty value for *, e.g.
399+ // Dig further for any, might have an empty value for *, e.g.
394400 // serving a directory. Issue #207.
395- if cn = cn .findChildByKind (mkind ); cn == nil {
401+ if cn = cn .findChildByKind (akind ); cn == nil {
396402 return
397403 }
398404 ctx .pvalues [len (cn .pnames )- 1 ] = ""
0 commit comments