mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-27 22:09:53 +02:00
@@ -31,6 +31,13 @@ func init() {
|
||||
Context: func(cctx context.Context, args ...any) (any, error) { return ctx, nil },
|
||||
}
|
||||
|
||||
ns.AddMethodMapping(ctx.Abs,
|
||||
nil,
|
||||
[][2]string{
|
||||
{"{{ math.Abs -2.1 }}", "2.1"},
|
||||
},
|
||||
)
|
||||
|
||||
ns.AddMethodMapping(ctx.Add,
|
||||
[]string{"add"},
|
||||
[][2]string{
|
||||
|
@@ -35,6 +35,16 @@ func New() *Namespace {
|
||||
// Namespace provides template functions for the "math" namespace.
|
||||
type Namespace struct{}
|
||||
|
||||
// Abs returns the absolute value of n.
|
||||
func (ns *Namespace) Abs(n any) (float64, error) {
|
||||
af, err := cast.ToFloat64E(n)
|
||||
if err != nil {
|
||||
return 0, errors.New("the math.Abs function requires a numeric argument")
|
||||
}
|
||||
|
||||
return math.Abs(af), nil
|
||||
}
|
||||
|
||||
// Add adds the multivalued addends n1 and n2 or more values.
|
||||
func (ns *Namespace) Add(inputs ...any) (any, error) {
|
||||
return ns.doArithmetic(inputs, '+')
|
||||
|
@@ -63,6 +63,33 @@ func TestBasicNSArithmetic(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestAbs(t *testing.T) {
|
||||
t.Parallel()
|
||||
c := qt.New(t)
|
||||
ns := New()
|
||||
|
||||
for _, test := range []struct {
|
||||
x any
|
||||
expect any
|
||||
}{
|
||||
{0.0, 0.0},
|
||||
{1.5, 1.5},
|
||||
{-1.5, 1.5},
|
||||
{-2, 2.0},
|
||||
{"abc", false},
|
||||
} {
|
||||
result, err := ns.Abs(test.x)
|
||||
|
||||
if b, ok := test.expect.(bool); ok && !b {
|
||||
c.Assert(err, qt.Not(qt.IsNil))
|
||||
continue
|
||||
}
|
||||
|
||||
c.Assert(err, qt.IsNil)
|
||||
c.Assert(result, qt.Equals, test.expect)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCeil(t *testing.T) {
|
||||
t.Parallel()
|
||||
c := qt.New(t)
|
||||
|
Reference in New Issue
Block a user