render.go
func Renderer(options ...RenderOptions) Handler {
	opt := prepareRenderOptions(options)
	cs := prepareCharset(opt.Charset)
	t := compile(opt)
	return func(res http.ResponseWriter, req *http.Request, c Context) {
		var tc *template.Template
		if Env == Dev {
			// recompile for easy development
			tc = compile(opt)
		} else {
			// use a clone of the initial template
			tc, _ = t.Clone()
		}
		//c.MapTo(&Render{res, req, tc, opt, cs, Data}, (*Render)(nil))
		c.Map(&Render{res, req, tc, opt, cs, Data})
	}
}
func Renderer(options ...RenderOptions) Handler {
	opt := prepareRenderOptions(options)
	cs := prepareCharset(opt.Charset)
	t := compile(opt)
	return func(res http.ResponseWriter, req *http.Request, c Context) {
		var tc *template.Template
		if Env == Dev {
			// recompile for easy development
			tc = compile(opt)
		} else {
			// use a clone of the initial template
			tc, _ = t.Clone()
		}
		//c.MapTo(&Render{res, req, tc, opt, cs, Data}, (*Render)(nil))
		c.Map(&Render{res, req, tc, opt, cs, Data})
	}
}
// Renderer is a Middleware that maps a render.Render service into the Martini handler chain. An single variadic render.RenderOptions
// struct can be optionally provided to configure HTML rendering. The default directory for templates is "templates" and the default
// file extension is ".tmpl".
//
// If MARTINI_ENV is set to "" or "development" then templates will be recompiled on every request. For more performance, set the
// MARTINI_ENV environment variable to "production"