From d077efe91a40bee31c44762dee7b6dced48e4eae Mon Sep 17 00:00:00 2001 From: Vishal Rana Date: Mon, 27 Jul 2015 08:43:11 -0700 Subject: [PATCH] Fixed #162 Signed-off-by: Vishal Rana --- context.go | 8 ++++---- echo.go | 19 ++++++------------- router.go | 19 ++++++++++--------- router_test.go | 3 --- 4 files changed, 20 insertions(+), 29 deletions(-) diff --git a/context.go b/context.go index d0a66eb2..cf335e98 100644 --- a/context.go +++ b/context.go @@ -109,7 +109,7 @@ func (c *Context) Bind(i interface{}) error { // Render renders a template with data and sends a text/html response with status // code. Templates can be registered using `Echo.SetRenderer()`. -func (c *Context) Render(code int, name string, data interface{}) (err error) { +func (c *Context) Render(code int, name string, data interface{}) error { if c.echo.renderer == nil { return RendererNotRegistered } @@ -123,7 +123,7 @@ func (c *Context) Render(code int, name string, data interface{}) (err error) { func (c *Context) HTML(code int, format string, a ...interface{}) (err error) { c.response.Header().Set(ContentType, TextHTMLCharsetUTF8) c.response.WriteHeader(code) - _, err = fmt.Fprintf(c.response, format, a...) + _, err = fmt.Fprintf(c.response, format, a...) return } @@ -137,7 +137,7 @@ func (c *Context) String(code int, format string, a ...interface{}) (err error) } // JSON sends a JSON response with status code. -func (c *Context) JSON(code int, i interface{}) (err error) { +func (c *Context) JSON(code int, i interface{}) error { c.response.Header().Set(ContentType, ApplicationJSONCharsetUTF8) c.response.WriteHeader(code) return json.NewEncoder(c.response).Encode(i) @@ -156,7 +156,7 @@ func (c *Context) JSONP(code int, callback string, i interface{}) (err error) { } // XML sends an XML response with status code. -func (c *Context) XML(code int, i interface{}) (err error) { +func (c *Context) XML(code int, i interface{}) error { c.response.Header().Set(ContentType, ApplicationXMLCharsetUTF8) c.response.WriteHeader(code) c.response.Write([]byte(xml.Header)) diff --git a/echo.go b/echo.go index 21ecf542..72417ff0 100644 --- a/echo.go +++ b/echo.go @@ -137,18 +137,6 @@ const ( ) var ( - methods = [...]string{ - CONNECT, - DELETE, - GET, - HEAD, - OPTIONS, - PATCH, - POST, - PUT, - TRACE, - } - //-------- // Errors //-------- @@ -156,6 +144,7 @@ var ( UnsupportedMediaType = errors.New("echo ⇒ unsupported media type") RendererNotRegistered = errors.New("echo ⇒ renderer not registered") InvalidRedirectCode = errors.New("echo ⇒ invalid redirect status code") + //---------------- // Error handlers //---------------- @@ -222,7 +211,11 @@ func (e *Echo) Router() *Router { // ColoredLog enable/disable colored log. func (e *Echo) ColoredLog(on bool) { - color.Disable() + if on { + color.Enable() + } else { + color.Disable() + } } // HTTP2 enable/disable HTTP2 support. diff --git a/router.go b/router.go index 8442ca42..8fda0df6 100644 --- a/router.go +++ b/router.go @@ -39,10 +39,8 @@ const ( mtype ) -func NewRouter(e *Echo) (r *Router) { - r = &Router{ - routes: []Route{}, - echo: e, +func NewRouter(e *Echo) *Router { + return &Router{ connectTree: new(node), deleteTree: new(node), getTree: new(node), @@ -52,8 +50,9 @@ func NewRouter(e *Echo) (r *Router) { postTree: new(node), putTree: new(node), traceTree: new(node), + routes: []Route{}, + echo: e, } - return } func (r *Router) Add(method, path string, h HandlerFunc, e *Echo) { @@ -307,10 +306,12 @@ func (r *Router) Find(method, path string, ctx *Context) (h HandlerFunc, e *Echo // Search order static > param > match-any for { if search == "" { - // Found - ctx.pnames = cn.pnames - h = cn.handler - e = cn.echo + if cn.handler != nil { + // Found + ctx.pnames = cn.pnames + h = cn.handler + e = cn.echo + } return } diff --git a/router_test.go b/router_test.go index 1f272791..a9a622c8 100644 --- a/router_test.go +++ b/router_test.go @@ -316,9 +316,6 @@ func TestRouterTwoParam(t *testing.T) { assert.Equal(t, "1", c.P(0)) assert.Equal(t, "1", c.P(1)) } - - h, _ = r.Find(GET, "/users/1", c) - assert.Nil(t, h) } func TestRouterMatchAny(t *testing.T) {