package hreflect

import "github.com/gohugoio/hugo/common/hreflect"

Package hreflect contains reflect helpers.

Index

Functions

func AsTime

func AsTime(v reflect.Value, loc *time.Location) (time.Time, bool)

AsTime returns v as a time.Time if possible. The given location is only used if the value implements AsTimeProvider (e.g. go-toml local). A zero Time and false is returned if this isn't possible. Note that this function does not accept string dates.

func CallMethodByName

func CallMethodByName(cxt context.Context, name string, v reflect.Value) []reflect.Value

func GetMethodByName

func GetMethodByName(v reflect.Value, name string) reflect.Value

GetMethodByName is the same as reflect.Value.MethodByName, but it caches the type lookup.

func GetMethodIndexByName

func GetMethodIndexByName(tp reflect.Type, name string) int

GetMethodIndexByName returns the index of the method with the given name, or -1 if no such method exists.

func IsContextType

func IsContextType(tp reflect.Type) bool

IsContextType returns whether tp is a context.Context type.

func IsFloat

func IsFloat(kind reflect.Kind) bool

IsFloat returns whether the given kind is a float.

func IsInt

func IsInt(kind reflect.Kind) bool

IsInt returns whether the given kind is an int.

func IsMap

func IsMap(v any) bool

IsMap reports whether v is a map.

func IsNumber

func IsNumber(kind reflect.Kind) bool

TODO(bep) replace the private versions in /tpl with these. IsNumber returns whether the given kind is a number.

func IsSlice

func IsSlice(v any) bool

IsSlice reports whether v is a slice.

func IsTime

func IsTime(tp reflect.Type) bool

IsTime returns whether tp is a time.Time type or if it can be converted into one in ToTime.

func IsTruthful

func IsTruthful(in any) bool

IsTruthful returns whether in represents a truthful value. See IsTruthfulValue

func IsTruthfulValue

func IsTruthfulValue(val reflect.Value) (truth bool)

IsTruthfulValue returns whether the given value has a meaningful truth value. This is based on template.IsTrue in Go's stdlib, but also considers IsZero and any interface value will be unwrapped before it's considered for truthfulness.

Based on: https://github.com/golang/go/blob/178a2c42254166cffed1b25fb1d3c7a5727cada6/src/text/template/exec.go#L306

func IsUint

func IsUint(kind reflect.Kind) bool

IsUint returns whether the given kind is an uint.

func IsValid

func IsValid(v reflect.Value) bool

IsValid returns whether v is not nil and a valid value.

func ToSliceAny

func ToSliceAny(v any) ([]any, bool)

ToSliceAny converts the given value to a slice of any if possible.

Source Files

helpers.go

Version
v0.144.2 (latest)
Published
Feb 19, 2025
Platform
linux/amd64
Imports
7 packages
Last checked
13 hours ago

Tools for package owners.