gf/os/gview/gview_buildin.go

174 lines
4.8 KiB
Go
Raw Normal View History

// Copyright 2017 gf Author(https://github.com/gogf/gf). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package gview
import (
"fmt"
"strings"
2019-07-29 21:01:19 +08:00
"github.com/gogf/gf/encoding/ghtml"
"github.com/gogf/gf/encoding/gurl"
"github.com/gogf/gf/os/gtime"
"github.com/gogf/gf/text/gstr"
"github.com/gogf/gf/util/gconv"
)
// Build-in template function: eq
2019-06-19 09:06:52 +08:00
func (view *View) funcEq(value interface{}, others ...interface{}) bool {
s := gconv.String(value)
for _, v := range others {
if strings.Compare(s, gconv.String(v)) != 0 {
return false
}
}
return true
}
// Build-in template function: ne
func (view *View) funcNe(value interface{}, other interface{}) bool {
return strings.Compare(gconv.String(value), gconv.String(other)) != 0
}
// Build-in template function: lt
func (view *View) funcLt(value interface{}, other interface{}) bool {
s1 := gconv.String(value)
s2 := gconv.String(other)
if gstr.IsNumeric(s1) && gstr.IsNumeric(s2) {
return gconv.Int64(value) < gconv.Int64(other)
}
return strings.Compare(s1, s2) < 0
}
// Build-in template function: le
func (view *View) funcLe(value interface{}, other interface{}) bool {
s1 := gconv.String(value)
s2 := gconv.String(other)
if gstr.IsNumeric(s1) && gstr.IsNumeric(s2) {
return gconv.Int64(value) <= gconv.Int64(other)
}
return strings.Compare(s1, s2) <= 0
}
// Build-in template function: gt
func (view *View) funcGt(value interface{}, other interface{}) bool {
s1 := gconv.String(value)
s2 := gconv.String(other)
if gstr.IsNumeric(s1) && gstr.IsNumeric(s2) {
return gconv.Int64(value) > gconv.Int64(other)
}
return strings.Compare(s1, s2) > 0
}
// Build-in template function: ge
func (view *View) funcGe(value interface{}, other interface{}) bool {
s1 := gconv.String(value)
s2 := gconv.String(other)
if gstr.IsNumeric(s1) && gstr.IsNumeric(s2) {
return gconv.Int64(value) >= gconv.Int64(other)
}
return strings.Compare(s1, s2) >= 0
}
// Build-in template function: include
2019-10-17 20:31:03 +08:00
func (view *View) funcInclude(file interface{}, data ...map[string]interface{}) string {
2019-06-19 09:06:52 +08:00
var m map[string]interface{} = nil
if len(data) > 0 {
m = data[0]
}
2019-10-17 20:31:03 +08:00
path := gconv.String(file)
if path == "" {
return ""
}
2019-08-16 00:29:14 +08:00
// It will search the file internally.
2019-10-17 20:31:03 +08:00
content, err := view.Parse(path, m)
2019-06-19 09:06:52 +08:00
if err != nil {
return err.Error()
}
return content
}
// Build-in template function: text
func (view *View) funcText(html interface{}) string {
2019-06-19 09:06:52 +08:00
return ghtml.StripTags(gconv.String(html))
}
// Build-in template function: html
func (view *View) funcHtmlEncode(html interface{}) string {
2019-06-19 09:06:52 +08:00
return ghtml.Entities(gconv.String(html))
}
// Build-in template function: htmldecode
func (view *View) funcHtmlDecode(html interface{}) string {
2019-06-19 09:06:52 +08:00
return ghtml.EntitiesDecode(gconv.String(html))
}
// Build-in template function: url
func (view *View) funcUrlEncode(url interface{}) string {
2019-06-19 09:06:52 +08:00
return gurl.Encode(gconv.String(url))
}
// Build-in template function: urldecode
func (view *View) funcUrlDecode(url interface{}) string {
2019-06-19 09:06:52 +08:00
if content, err := gurl.Decode(gconv.String(url)); err == nil {
return content
} else {
return err.Error()
}
}
// Build-in template function: date
2019-06-19 09:06:52 +08:00
func (view *View) funcDate(format string, timestamp ...interface{}) string {
t := int64(0)
if len(timestamp) > 0 {
t = gconv.Int64(timestamp[0])
}
if t == 0 {
t = gtime.Millisecond()
}
return gtime.NewFromTimeStamp(t).Format(format)
}
// Build-in template function: compare
func (view *View) funcCompare(value1, value2 interface{}) int {
2019-06-19 09:06:52 +08:00
return strings.Compare(gconv.String(value1), gconv.String(value2))
}
// Build-in template function: substr
func (view *View) funcSubStr(start, end int, str interface{}) string {
2019-06-19 09:06:52 +08:00
return gstr.SubStr(gconv.String(str), start, end)
}
// Build-in template function: strlimit
func (view *View) funcStrLimit(length int, suffix string, str interface{}) string {
2019-06-19 09:06:52 +08:00
return gstr.StrLimit(gconv.String(str), length, suffix)
}
// Build-in template function: highlight
func (view *View) funcHighlight(key string, color string, str interface{}) string {
2019-06-19 09:06:52 +08:00
return gstr.Replace(gconv.String(str), key, fmt.Sprintf(`<span style="color:%s;">%s</span>`, color, key))
}
// Build-in template function: hidestr
func (view *View) funcHideStr(percent int, hide string, str interface{}) string {
2019-06-19 09:06:52 +08:00
return gstr.HideStr(gconv.String(str), percent, hide)
}
// Build-in template function: toupper
func (view *View) funcToUpper(str interface{}) string {
2019-06-19 09:06:52 +08:00
return gstr.ToUpper(gconv.String(str))
}
// Build-in template function: toupper
func (view *View) funcToLower(str interface{}) string {
2019-06-19 09:06:52 +08:00
return gstr.ToLower(gconv.String(str))
}
// Build-in template function: nl2br
func (view *View) funcNl2Br(str interface{}) string {
2019-06-19 09:06:52 +08:00
return gstr.Nl2Br(gconv.String(str))
}