func (v *View) ExecuteWriter(w io.Writer, filename string, layout string, bindingData interface{}) error {
	if len(filename) > 2 {
		if filename[0] == '/' {  
			filename = filename[1:]
		}
	}
	e := v.Find(filename)
	if e == nil {
		return errNoViewEngineForExt.Format(filepath.Ext(filename))
	}
	return e.ExecuteWriter(w, filename, layout, bindingData)
}
ExecuteWriter calls the correct view Engine's ExecuteWriter func
package view
import (
	"io"
	"path/filepath"
	"github.com/kataras/iris/core/errors"
)
type View struct {
	engines []Engine
}
func (v *View) Register(e Engine) {
	v.engines = append(v.engines, e)
}
func (v *View) Find(filename string) Engine {
	extension := filepath.Ext(filename)
	for i, n := 0, len(v.engines); i < n; i++ {
		e := v.engines[i]
		if e.Ext() == extension {
			return e
		}
	}
	return nil
}
func (v *View) Len() int {
	return len(v.engines)
}
var (
	errNoViewEngineForExt = errors.New("no view engine found for '%s'")
)