Skip to content

Commit

Permalink
address comments
Browse files Browse the repository at this point in the history
  • Loading branch information
Jordan Singer committed Jan 26, 2024
1 parent 6b4367b commit 131e7f5
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions pkg/knowledge_base2/properties/int_property.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ func (i *IntProperty) GetDefaultValue(ctx knowledgebase.DynamicContext, data kno
}

func (i *IntProperty) Parse(value any, ctx knowledgebase.DynamicContext, data knowledgebase.DynamicValueData) (any, error) {

if val, ok := value.(string); ok {
var result int
err := ctx.ExecuteDecode(val, data, &result)
Expand All @@ -66,16 +67,20 @@ func (i *IntProperty) Parse(value any, ctx knowledgebase.DynamicContext, data kn
if val, ok := value.(int); ok {
return val, nil
}
EPSILON := 0.0000001
if val, ok := value.(float32); ok {
if float64(val) == math.Trunc(float64(val)) {
return int(val), nil
ival := int(val)
if math.Abs(float64(val)-float64(ival)) > EPSILON {
return 0, fmt.Errorf("cannot convert non-integral float to int: %f", val)
}
return nil, fmt.Errorf("invalid int value %v, of type %T", value, value)
return int(val), nil

} else if val, ok := value.(float64); ok {
if val == math.Trunc(val) {
return int(val), nil
ival := int(val)
if math.Abs(val-float64(ival)) > EPSILON {
return 0, fmt.Errorf("cannot convert non-integral float to int: %f", val)
}
return nil, fmt.Errorf("invalid int value %v, of type %T", value, value)
return int(val), nil
}
val, err := ParsePropertyRef(value, ctx, data)
if err == nil {
Expand Down

0 comments on commit 131e7f5

Please sign in to comment.