Some cases using mustBeInteger utility function
diff --git a/schemaDocument.go b/schemaDocument.go
index 8f48b36..65ff5ae 100644
--- a/schemaDocument.go
+++ b/schemaDocument.go
@@ -401,37 +401,25 @@
// validation : string
if existsMapKey(m, KEY_MIN_LENGTH) {
- if isKind(m[KEY_MIN_LENGTH], reflect.Float64) {
- minLengthValue := m[KEY_MIN_LENGTH].(float64)
- if isFloat64AnInteger(minLengthValue) {
- if minLengthValue < 0 {
- return errors.New("minLength must be greater than or equal to 0")
- }
- minLengthIntegerValue := int(minLengthValue)
- currentSchema.minLength = &minLengthIntegerValue
- } else {
- return errors.New("minLength must be an integer")
- }
- } else {
+ minLengthIntegerValue := mustBeInteger(m[KEY_MIN_LENGTH])
+ if minLengthIntegerValue == nil {
return errors.New("minLength must be an integer")
}
+ if *minLengthIntegerValue < 0 {
+ return errors.New("minLength must be greater than or equal to 0")
+ }
+ currentSchema.minLength = minLengthIntegerValue
}
if existsMapKey(m, KEY_MAX_LENGTH) {
- if isKind(m[KEY_MAX_LENGTH], reflect.Float64) {
- maxLengthValue := m[KEY_MAX_LENGTH].(float64)
- if isFloat64AnInteger(maxLengthValue) {
- if maxLengthValue < 0 {
- return errors.New("maxLength must be greater than or equal to 0")
- }
- maxLengthIntegerValue := int(maxLengthValue)
- currentSchema.maxLength = &maxLengthIntegerValue
- } else {
- return errors.New("maxLength must be an integer")
- }
- } else {
+ maxLengthIntegerValue := mustBeInteger(m[KEY_MAX_LENGTH])
+ if maxLengthIntegerValue == nil {
return errors.New("maxLength must be an integer")
}
+ if *maxLengthIntegerValue < 0 {
+ return errors.New("maxLength must be greater than or equal to 0")
+ }
+ currentSchema.maxLength = maxLengthIntegerValue
}
if currentSchema.minLength != nil && currentSchema.maxLength != nil {
diff --git a/utils.go b/utils.go
index b0a8414..cecacf9 100644
--- a/utils.go
+++ b/utils.go
@@ -33,17 +33,18 @@
"reflect"
)
-func mustBeInteger(what interface{}) *float64 {
- var number float64
+func mustBeInteger(what interface{}) *int {
+ var number int
if isKind(what, reflect.Float64) {
- number = what.(float64)
- if isFloat64AnInteger(number) {
+ fnumber := what.(float64)
+ if isFloat64AnInteger(fnumber) {
+ number = int(fnumber)
return &number
} else {
return nil
}
} else if isKind(what, reflect.Int) {
- number = float64(what.(int))
+ number = what.(int)
return &number
}
return nil