瀏覽代碼

feat: Add some template function about date (#9812)

* :sparkles: feat(template): Add some template func about week of date

* :sparkles: feat: rename `WeekOfYear` to `ISOWeek`

* fix: 命名错误
Frostime 1 年之前
父節點
當前提交
86547f77b5
共有 1 個文件被更改,包括 30 次插入1 次删除
  1. 30 1
      kernel/model/template.go

+ 30 - 1
kernel/model/template.go

@@ -43,8 +43,34 @@ import (
 	"github.com/siyuan-note/siyuan/kernel/util"
 )
 
+/**
+ * [0-6] represents [Sunday - Saturday]
+ */
+func Weekday(date time.Time) int {
+	return int(date.Weekday())
+}
+
+func WeekdayCN(date time.Time) string {
+	week := GetWeekday(date)
+	weekdayCN := []string{"日", "一", "二", "三", "四", "五", "六"}
+	return weekdayCN[week]
+}
+
+// date is in `week`-th weak of this year
+func ISOWeek(date time.Time) int {
+	_, week := date.ISOWeek()
+	return week
+}
+
 func RenderGoTemplate(templateContent string) (ret string, err error) {
-	tpl, err := template.New("").Funcs(sprig.TxtFuncMap()).Parse(templateContent)
+	tmpl := template.New("")
+	tmpl = tmpl.Funcs(sprig.TxtFuncMap())
+	tmpl = tmpl.Funcs(template.FuncMap{
+		"Weekday":     Weekday,
+		"WeekdayCN":   WeekdayCN,
+		"ISOWeek":  ISOWeek,
+	})
+	tpl, err := tmpl.Parse(templateContent)
 	if nil != err {
 		return "", errors.New(fmt.Sprintf(Conf.Language(44), err.Error()))
 	}
@@ -240,6 +266,9 @@ func renderTemplate(p, id string, preview bool) (string, error) {
 		}
 		return ret
 	}
+	funcMap["Weekday"] = Weekday
+	funcMap["WeekdayCN"] = WeekdayCN
+	funcMap["ISOWeek"] = ISOWeek
 
 	goTpl := template.New("").Delims(".action{", "}")
 	tpl, err := goTpl.Funcs(funcMap).Parse(gulu.Str.FromBytes(md))