handlebars-go/virtualmethods.go

22 lines
456 B
Go

package handlebars
import "reflect"
type virtualMethod func(ctx reflect.Value) (val reflect.Value, hasMethod bool)
func getVirtualMethod(name string) virtualMethod {
switch name {
case "length":
return vmethodLength
}
return nil
}
func vmethodLength(ctx reflect.Value) (reflect.Value, bool) {
switch ctx.Kind() {
case reflect.Slice, reflect.Array, reflect.String, reflect.Map:
return reflect.ValueOf(ctx.Len()), true
}
return zero, false
}