Esempio n. 1
0
func BenchmarkUserRegexp(b *testing.B) {
	b.StopTimer()
	//pattern := "/user/{action}/{arg}/"
	//pattern := "^/user(/(?P<action>[[:alnum:]]+)/(?P<arg>[[:alnum:]]+))?"
	pattern := "^/user/(?P<action>[[:alnum:]]+)/(?P<arg>[[:alnum:]]+)"
	input := "/user/view/1"

	re, err := pathexp.RegexpCompile(pattern)
	if err != nil {
		b.Errorf("pattern compile fail: %s; pattern=%s \n", err, pattern)
		return
	}
	// matched, data := re.Match(input)
	// b.Log(matched, data)
	// if !matched || data["action"] != "view" || data["arg"] != "1" {
	// 	b.Error("Match fail", matched, data)
	// 	return
	// }

	//var m pathexp.Matcher = re

	b.StartTimer()
	for i := 0; i < b.N; i++ {
		re.Match(input)
	}

}
Esempio n. 2
0
// Regexp match with regexp
func (r *RouteTable) Regexp(method, path string) *RouteRule {
	exp, err := pathexp.RegexpCompile(path)
	if err != nil {
		panic(err)
	}

	rule := &RouteRule{
		Pattern: path,
		Method:  method,
		re:      exp,
	}
	r.Routes = append(r.Routes, rule)
	return rule
}