From 2f8a70d548604f7c0d9707ccd5bf2c02e2af75f1 Mon Sep 17 00:00:00 2001 From: astaxie Date: Wed, 11 Jun 2014 09:33:35 +0800 Subject: [PATCH] beego: router support param has _ --- tree.go | 2 +- tree_test.go | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tree.go b/tree.go index 37463fea..cfc95fa4 100644 --- a/tree.go +++ b/tree.go @@ -284,7 +284,7 @@ func splitSegment(key string) (bool, []string, string) { var expt []rune var skipnum int params := []string{} - reg := regexp.MustCompile(`[a-zA-Z0-9]+`) + reg := regexp.MustCompile(`[a-zA-Z0-9_]+`) for i, v := range key { if skipnum > 0 { skipnum -= 1 diff --git a/tree_test.go b/tree_test.go index 31a82197..83e1d67c 100644 --- a/tree_test.go +++ b/tree_test.go @@ -29,8 +29,8 @@ func init() { routers = append(routers, testinfo{"/v1/shop/:name:string", "/v1/shop/nike", map[string]string{":name": "nike"}}) routers = append(routers, testinfo{"/v1/shop/:id([0-9]+)", "/v1/shop//123", map[string]string{":id": "123"}}) routers = append(routers, testinfo{"/v1/shop/:id([0-9]+)_:name", "/v1/shop/123_nike", map[string]string{":id": "123", ":name": "nike"}}) - routers = append(routers, testinfo{"/v1/shop/:id_cms.html", "/v1/shop/123_cms.html", map[string]string{":id": "123"}}) - routers = append(routers, testinfo{"/v1/shop/cms_:id_:page.html", "/v1/shop/cms_123_1.html", map[string]string{":id": "123", ":page": "1"}}) + routers = append(routers, testinfo{"/v1/shop/:id(.+)_cms.html", "/v1/shop/123_cms.html", map[string]string{":id": "123"}}) + routers = append(routers, testinfo{"/v1/shop/cms_:id(.+)_:page(.+).html", "/v1/shop/cms_123_1.html", map[string]string{":id": "123", ":page": "1"}}) } func TestTreeRouters(t *testing.T) { @@ -113,11 +113,11 @@ func TestSplitSegment(t *testing.T) { if !b || len(w) != 2 || w[0] != ":id" || w[1] != ":name" || r != `([0-9]+)_(.+)` { t.Fatal(`:id([0-9]+)_:name should return true, [:id :name], '([0-9]+)_(.+)'`) } - b, w, r = splitSegment(":id_cms.html") + b, w, r = splitSegment(":id(.+)_cms.html") if !b || len(w) != 1 || w[0] != ":id" || r != `(.+)_cms.html` { t.Fatal(":id_cms.html should return true, [:id], '(.+)_cms.html'") } - b, w, r = splitSegment("cms_:id_:page.html") + b, w, r = splitSegment("cms_:id(.+)_:page(.+).html") if !b || len(w) != 2 || w[0] != ":id" || w[1] != ":page" || r != `cms_(.+)_(.+).html` { t.Fatal(":id_cms.html should return true, [:id :page], cms_(.+)_(.+).html") }