func (s *TestSuite) TestMisc(c *C) { // Must // TODO: Add better error message (see issue #18) c.Check( func() { pongo2.Must(testSuite2.FromFile("template_tests/inheritance/base2.tpl")) }, PanicMatches, `\[Error \(where: fromfile\) in .*template_tests/inheritance/doesnotexist.tpl | Line 1 Col 12 near 'doesnotexist.tpl'\] open .*template_tests/inheritance/doesnotexist.tpl: no such file or directory`, ) // Context c.Check(parseTemplateFn("", pongo2.Context{"'illegal": nil}), PanicMatches, ".*not a valid identifier.*") // Registers c.Check(func() { pongo2.RegisterFilter("escape", nil) }, PanicMatches, ".*is already registered.*") c.Check(func() { pongo2.RegisterTag("for", nil) }, PanicMatches, ".*is already registered.*") // ApplyFilter v, err := pongo2.ApplyFilter("title", pongo2.AsValue("this is a title"), nil) if err != nil { c.Fatal(err) } c.Check(v.String(), Equals, "This Is A Title") c.Check(func() { _, err := pongo2.ApplyFilter("doesnotexist", nil, nil) if err != nil { panic(err) } }, PanicMatches, `\[Error \(where: applyfilter\)\] Filter with name 'doesnotexist' not found.`) }
func filterNaturalday(in *pongo2.Value, param *pongo2.Value) (*pongo2.Value, *pongo2.Error) { basetime, is_time := in.Interface().(time.Time) if !is_time { return nil, &pongo2.Error{ Sender: "filter:naturalday", ErrorMsg: "naturalday-value is not a time.Time-instance.", } } var reference_time time.Time if !param.IsNil() { reference_time, is_time = param.Interface().(time.Time) if !is_time { return nil, &pongo2.Error{ Sender: "filter:naturalday", ErrorMsg: "naturalday-parameter is not a time.Time-instance.", } } } else { reference_time = time.Now() } d := reference_time.Sub(basetime) / time.Hour switch { case d >= 0 && d < 24: // Today return pongo2.AsValue("today"), nil case d >= 24: return pongo2.AsValue("yesterday"), nil case d < 0 && d >= -24: return pongo2.AsValue("tomorrow"), nil } // Default behaviour return pongo2.ApplyFilter("naturaltime", in, param) }