~bigbes/core-go

129dc1baaa639f00e06a9d16ac96e0c4b300bcce — Drew DeVault 4 years ago 073f263
valid: fix nil values in OptionalString
1 files changed, 18 insertions(+), 6 deletions(-)

M valid/valid.go
M valid/valid.go => valid/valid.go +18 -6
@@ 45,6 45,9 @@ func (valid *Validation) Optional(name string, fn func(i interface{})) {
		panic("Attempted to validate fields without input")
	}
	if o, ok := valid.input[name]; ok {
		if o == nil {
			return
		}
		fn(o)
	}
}


@@ 58,13 61,22 @@ func (valid *Validation) OptionalString(name string, fn func(s string)) {
		panic("Attempted to validate fields without input")
	}
	if o, ok := valid.input[name]; ok {
		s, ok := o.(string)
		valid.
			Expect(ok, "Expected %s to be a string", name).
			WithField(name)
		if ok {
			fn(s)
		if o == nil {
			return
		}
		var val string
		switch s := o.(type) {
		case string:
			val = s
		case *string:
			val = *s
		default:
			valid.
				Error("Expected %s to be a string", name).
				WithField(name)
			return
		}
		fn(val)
	}
}