diff --git a/_examples/README.md b/_examples/README.md
index d2333e4e..fe2df2d8 100644
--- a/_examples/README.md
+++ b/_examples/README.md
@@ -199,6 +199,8 @@ Navigate through examples for a better understanding.
- [Pug (Jade) Extends`](view/template_pug_3)
- [Jet](/view/template_jet_0)
- [Jet Embedded](view/template_jet_1_embedded)
+- [Jet 'urlpath' tmpl func](/view/template_jet_2)
+- [Jet template funcs from structure](/view/template_jet_3)
You can serve [quicktemplate](https://github.com/valyala/quicktemplate) and [hero templates](https://github.com/shiyanhui/hero/hero) files too, simply by using the `context#ResponseWriter`, take a look at the [http_responsewriter/quicktemplate](http_responsewriter/quicktemplate) and [http_responsewriter/herotemplate](http_responsewriter/herotemplate) examples.
diff --git a/_examples/docker/Dockerfile b/_examples/docker/Dockerfile
index 0d1e0227..09daa324 100644
--- a/_examples/docker/Dockerfile
+++ b/_examples/docker/Dockerfile
@@ -7,7 +7,9 @@ ENV GO111MODULE=on \
GOOS=linux \
GOARCH=amd64
WORKDIR /go/src/app
-COPY . /go/src/app
+COPY go.mod .
+RUN go mod download
+COPY . .
RUN go install
FROM scratch
diff --git a/_examples/docker/go.mod b/_examples/docker/go.mod
index 0e122131..b9e400d0 100644
--- a/_examples/docker/go.mod
+++ b/_examples/docker/go.mod
@@ -4,4 +4,5 @@ go 1.13
require (
github.com/kataras/iris/v12 v12.1.6
+ github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
)
diff --git a/_examples/view/template_jet_3/main.go b/_examples/view/template_jet_3/main.go
new file mode 100644
index 00000000..6c67b4cc
--- /dev/null
+++ b/_examples/view/template_jet_3/main.go
@@ -0,0 +1,55 @@
+package main
+
+import (
+ "fmt"
+ "reflect"
+ "strings"
+
+ "github.com/kataras/iris/v12"
+ "github.com/kataras/iris/v12/view"
+)
+
+// https://github.com/kataras/iris/issues/1443
+
+func main() {
+
+ tmpl := iris.Jet("./views", ".jet")
+ tmpl.Reload(true)
+
+ val := reflect.ValueOf(ViewBuiler{})
+ fns := val.Type()
+ for i := 0; i < fns.NumMethod(); i++ {
+ method := fns.Method(i)
+ tmpl.AddFunc(strings.ToLower(method.Name), val.Method(i).Interface())
+ }
+
+ app := iris.New()
+ app.RegisterView(tmpl)
+
+ app.Get("/", func(ctx iris.Context) {
+ ctx.View("index.jet")
+ })
+
+ app.Run(iris.Addr(":8080"))
+}
+
+type ViewBuiler struct {
+}
+
+func (ViewBuiler) Asset(a view.JetArguments) reflect.Value {
+ path := a.Get(0).String()
+ // fmt.Println(os.Getenv("APP_URL"))
+ return reflect.ValueOf(path)
+}
+
+func (ViewBuiler) Style(a view.JetArguments) reflect.Value {
+ path := a.Get(0).String()
+ s := fmt.Sprintf(` `, path)
+ return reflect.ValueOf(s)
+}
+
+func (ViewBuiler) Script(a view.JetArguments) reflect.Value {
+ path := a.Get(0).String()
+ s := fmt.Sprintf(``, path)
+ return reflect.ValueOf(s)
+}
diff --git a/_examples/view/template_jet_3/views/index.jet b/_examples/view/template_jet_3/views/index.jet
new file mode 100644
index 00000000..bfb1e3fa
--- /dev/null
+++ b/_examples/view/template_jet_3/views/index.jet
@@ -0,0 +1,5 @@
+{{ asset("./myasset.mp3")}}
+
+{{ style("my-stle.css")}}
+
+{{ script("my-script.js")}}
\ No newline at end of file