mirror of
https://github.com/kataras/iris.git
synced 2026-01-01 01:07:06 +00:00
20 days of unstoppable work. Waiting fo go 1.8, I didn't finish yet, some touches remains.
Former-commit-id: ed84f99c89f43fe5e980a8e6d0ee22c186f0e1b9
This commit is contained in:
92
adaptors/view/html.go
Normal file
92
adaptors/view/html.go
Normal file
@@ -0,0 +1,92 @@
|
||||
package view
|
||||
|
||||
import (
|
||||
"github.com/kataras/go-template/html"
|
||||
)
|
||||
|
||||
// HTMLAdaptor is the html engine policy adaptor
|
||||
// used like the "html/template" standard go package
|
||||
// but with a lot of extra features by.
|
||||
//
|
||||
// This is just a wrapper of kataras/go-template/html.
|
||||
type HTMLAdaptor struct {
|
||||
*Adaptor
|
||||
engine *html.Engine
|
||||
}
|
||||
|
||||
// HTML creates and returns a new kataras/go-template/html engine.
|
||||
// The html engine used like the "html/template" standard go package
|
||||
// but with a lot of extra features.
|
||||
func HTML(directory string, extension string) *HTMLAdaptor {
|
||||
engine := html.New()
|
||||
return &HTMLAdaptor{
|
||||
Adaptor: NewAdaptor(directory, extension, engine),
|
||||
// create the underline engine with the default configuration,
|
||||
// which can be changed by this type.
|
||||
//The whole funcs should called only before Iris' build & listen state.
|
||||
engine: engine, // we need that for the configuration only.
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Delims sets the action delimiters to the specified strings, to be used in
|
||||
// subsequent calls to Parse, ParseFiles, or ParseGlob. Nested template
|
||||
// definitions will inherit the settings. An empty delimiter stands for the
|
||||
// corresponding default: {{ or }}.
|
||||
func (h *HTMLAdaptor) Delims(left string, right string) *HTMLAdaptor {
|
||||
if left != "" && right != "" {
|
||||
h.engine.Config.Left = left
|
||||
h.engine.Config.Right = right
|
||||
}
|
||||
return h
|
||||
}
|
||||
|
||||
// Layout sets the layout template file which inside should use
|
||||
// the {{ yield }} func to yield the main template file
|
||||
// and optionally {{partial/partial_r/render}} to render other template files like headers and footers
|
||||
//
|
||||
// The 'tmplLayoutFile' is a relative path of the templates base directory,
|
||||
// for the template file whith its extension.
|
||||
//
|
||||
// Example: HTML("./templates", ".html").Layout("layouts/mainLayout.html")
|
||||
// // mainLayout.html is inside: "./templates/layouts/".
|
||||
//
|
||||
// Note: Layout can be changed for a specific call
|
||||
// action with the option: "layout" on the Iris' context.Render function.
|
||||
func (h *HTMLAdaptor) Layout(tmplLayoutFile string) *HTMLAdaptor {
|
||||
h.engine.Config.Layout = tmplLayoutFile
|
||||
return h
|
||||
}
|
||||
|
||||
// LayoutFuncs adds the elements of the argument map to the template's layout-only function map.
|
||||
// It is legal to overwrite elements of the default layout actions:
|
||||
// - yield func() (template.HTML, error)
|
||||
// - current func() (string, error)
|
||||
// - partial func(partialName string) (template.HTML, error)
|
||||
// - partial_r func(partialName string) (template.HTML, error)
|
||||
// - render func(fullPartialName string) (template.HTML, error).
|
||||
func (h *HTMLAdaptor) LayoutFuncs(funcMap map[string]interface{}) *HTMLAdaptor {
|
||||
if funcMap != nil {
|
||||
h.engine.Config.LayoutFuncs = funcMap
|
||||
}
|
||||
return h
|
||||
}
|
||||
|
||||
// Funcs adds the elements of the argument map to the template's function map.
|
||||
// It is legal to overwrite elements of the default actions:
|
||||
// - url func(routeName string, args ...string) string
|
||||
// - urlpath func(routeName string, args ...string) string
|
||||
// - render func(fullPartialName string) (template.HTML, error).
|
||||
func (h *HTMLAdaptor) Funcs(funcMap map[string]interface{}) *HTMLAdaptor {
|
||||
if len(funcMap) == 0 {
|
||||
return h
|
||||
}
|
||||
// configuration maps are never nil, because
|
||||
// they are initialized at each of the engine's New func
|
||||
// so we're just passing them inside it.
|
||||
for k, v := range funcMap {
|
||||
h.engine.Config.Funcs[k] = v
|
||||
}
|
||||
|
||||
return h
|
||||
}
|
||||
Reference in New Issue
Block a user