aboutsummaryrefslogtreecommitdiff
path: root/modules/base/template.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/base/template.go')
-rw-r--r--modules/base/template.go73
1 files changed, 73 insertions, 0 deletions
diff --git a/modules/base/template.go b/modules/base/template.go
new file mode 100644
index 00000000..8d95dbea
--- /dev/null
+++ b/modules/base/template.go
@@ -0,0 +1,73 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package base
+
+import (
+ "container/list"
+ "fmt"
+ "html/template"
+ "strings"
+ "time"
+)
+
+func Str2html(raw string) template.HTML {
+ return template.HTML(raw)
+}
+
+func Range(l int) []int {
+ return make([]int, l)
+}
+
+func List(l *list.List) chan interface{} {
+ e := l.Front()
+ c := make(chan interface{})
+ go func() {
+ for e != nil {
+ c <- e.Value
+ e = e.Next()
+ }
+ close(c)
+ }()
+ return c
+}
+
+var mailDomains = map[string]string{
+ "gmail.com": "gmail.com",
+}
+
+var TemplateFuncs template.FuncMap = map[string]interface{}{
+ "AppName": func() string {
+ return AppName
+ },
+ "AppVer": func() string {
+ return AppVer
+ },
+ "AppDomain": func() string {
+ return Domain
+ },
+ "LoadTimes": func(startTime time.Time) string {
+ return fmt.Sprint(time.Since(startTime).Nanoseconds()/1e6) + "ms"
+ },
+ "AvatarLink": AvatarLink,
+ "str2html": Str2html,
+ "TimeSince": TimeSince,
+ "FileSize": FileSize,
+ "Subtract": Subtract,
+ "ActionIcon": ActionIcon,
+ "ActionDesc": ActionDesc,
+ "DateFormat": DateFormat,
+ "List": List,
+ "Mail2Domain": func(mail string) string {
+ suffix := strings.SplitN(mail, "@", 2)[1]
+ domain, ok := mailDomains[suffix]
+ if !ok {
+ return "mail." + suffix
+ }
+ return domain
+ },
+ "SubStr": func(str string, start, length int) string {
+ return str[start : start+length]
+ },
+}