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))