var ERROR_CLASS = "hasError"
var ( // The functions available for use in the templates. TemplateFuncs = map[string]interface{}{ "url": ReverseUrl, "eq": Equal, "set": func(renderArgs map[string]interface{}, key string, value interface{}) template.HTML { renderArgs[key] = value return template.HTML("") }, "append": func(renderArgs map[string]interface{}, key string, value interface{}) template.HTML { if renderArgs[key] == nil { renderArgs[key] = []interface{}{value} } else { renderArgs[key] = append(renderArgs[key].([]interface{}), value) } return template.HTML("") }, "field": NewField, "option": func(f *Field, val, label string) template.HTML { selected := "" if f.Flash() == val { selected = " selected" } return template.HTML(fmt.Sprintf(`<option value="%s"%s>%s</option>`, html.EscapeString(val), selected, html.EscapeString(label))) }, "radio": func(f *Field, val string) template.HTML { checked := "" if f.Flash() == val { checked = " checked" } return template.HTML(fmt.Sprintf(`<input type="radio" name="%s" value="%s"%s>`, html.EscapeString(f.Name), html.EscapeString(val), checked)) }, "checkbox": func(f *Field, val string) template.HTML { checked := "" if f.Flash() == val { checked = " checked" } return template.HTML(fmt.Sprintf(`<input type="checkbox" name="%s" value="%s"%s>`, html.EscapeString(f.Name), html.EscapeString(val), checked)) }, "pad": func(str string, width int) template.HTML { if len(str) >= width { return template.HTML(html.EscapeString(str)) } return template.HTML(html.EscapeString(str) + strings.Repeat(" ", width-len(str))) }, "errorClass": func(name string, renderArgs map[string]interface{}) template.HTML { errorMap, ok := renderArgs["errors"].(map[string]*ValidationError) if !ok || errorMap == nil { WARN.Println("Called 'errorClass' without 'errors' in the render args.") return template.HTML("") } valError, ok := errorMap[name] if !ok || valError == nil { return template.HTML("") } return template.HTML(ERROR_CLASS) }, "msg": func(renderArgs map[string]interface{}, message string, args ...interface{}) template.HTML { return template.HTML(Message(renderArgs[CurrentLocaleRenderArg].(string), message, args...)) }, "nl2br": func(text string) template.HTML { return template.HTML(strings.Replace(template.HTMLEscapeString(text), "\n", "<br>", -1)) }, "raw": func(text string) template.HTML { return template.HTML(text) }, "pluralize": func(items interface{}, pluralOverrides ...string) string { singular, plural := "", "s" if len(pluralOverrides) >= 1 { singular = pluralOverrides[0] if len(pluralOverrides) == 2 { plural = pluralOverrides[1] } } switch v := reflect.ValueOf(items); v.Kind() { case reflect.Int: if items.(int) != 1 { return plural } case reflect.Slice: if v.Len() != 1 { return plural } default: ERROR.Println("pluralize: unexpected type: ", v) } return singular }, "date": func(date time.Time) string { return date.Format(DateFormat) }, "datetime": func(date time.Time) string { return date.Format(DateTimeFormat) }, "slug": Slug, } )
func ReverseUrl(args ...interface{}) (string, error)
Return a url capable of invoking a given controller method: "Application.ShowApp 123" => "/app/123"
func Slug(text string) string
type GoTemplate struct { *template.Template // contains filtered or unexported fields }
Adapter for Go Templates.
func (gotmpl GoTemplate) Content() []string
func (gotmpl GoTemplate) Render(wr io.Writer, arg interface{}) error
return a 'revel.Template' from Go's template.
type Template interface { Name() string Content() []string Render(wr io.Writer, arg interface{}) error }
type TemplateLoader struct {
// contains filtered or unexported fields
}
This object handles loading and parsing of templates. Everything below the application's views directory is treated as a template.
func NewTemplateLoader(paths []string) *TemplateLoader
func (loader *TemplateLoader) Refresh() *Error
This scans the views directory and parses all templates as Go Templates. If a template fails to parse, the error is set on the loader. (It's awkward to refresh a single Go Template)
func (loader *TemplateLoader) Template(name string) (Template, error)
Return the Template with the given name. The name is the template's path relative to a template loader root.
An Error is returned if there was any problem with any of the templates. (In this case, if a template is returned, it may still be usable.)
func (loader *TemplateLoader) WatchDir(info os.FileInfo) bool
func (loader *TemplateLoader) WatchFile(basename string) bool