From 86547f77b5777d86f9af394f07d58536fbb618b5 Mon Sep 17 00:00:00 2001 From: Frostime Date: Mon, 4 Dec 2023 15:08:01 +0800 Subject: [PATCH] feat: Add some template function about date (#9812) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * :sparkles: feat(template): Add some template func about week of date * :sparkles: feat: rename `WeekOfYear` to `ISOWeek` * fix: 命名错误 --- kernel/model/template.go | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/kernel/model/template.go b/kernel/model/template.go index 41a05fed6..7a12e1747 100644 --- a/kernel/model/template.go +++ b/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))