@@ -700,19 +700,19 @@ func formulaCriteriaParser(exp string) (fc *formulaCriteria) {
700
700
fc .Type , fc .Condition = criteriaEq , match [1 ]
701
701
return
702
702
}
703
- if match := regexp .MustCompile (`^<(.*)$` ).FindStringSubmatch (exp ); len (match ) > 1 {
703
+ if match := regexp .MustCompile (`^<= (.*)$` ).FindStringSubmatch (exp ); len (match ) > 1 {
704
704
fc .Type , fc .Condition = criteriaLe , match [1 ]
705
705
return
706
706
}
707
- if match := regexp .MustCompile (`^>(.*)$` ).FindStringSubmatch (exp ); len (match ) > 1 {
707
+ if match := regexp .MustCompile (`^>= (.*)$` ).FindStringSubmatch (exp ); len (match ) > 1 {
708
708
fc .Type , fc .Condition = criteriaGe , match [1 ]
709
709
return
710
710
}
711
- if match := regexp .MustCompile (`^<= (.*)$` ).FindStringSubmatch (exp ); len (match ) > 1 {
711
+ if match := regexp .MustCompile (`^<(.*)$` ).FindStringSubmatch (exp ); len (match ) > 1 {
712
712
fc .Type , fc .Condition = criteriaL , match [1 ]
713
713
return
714
714
}
715
- if match := regexp .MustCompile (`^>= (.*)$` ).FindStringSubmatch (exp ); len (match ) > 1 {
715
+ if match := regexp .MustCompile (`^>(.*)$` ).FindStringSubmatch (exp ); len (match ) > 1 {
716
716
fc .Type , fc .Condition = criteriaG , match [1 ]
717
717
return
718
718
}
@@ -732,8 +732,11 @@ func formulaCriteriaParser(exp string) (fc *formulaCriteria) {
732
732
// formulaCriteriaEval evaluate formula criteria expression.
733
733
func formulaCriteriaEval (val string , criteria * formulaCriteria ) (result bool , err error ) {
734
734
var value , expected float64
735
+ var e error
735
736
var prepareValue = func (val , cond string ) (value float64 , expected float64 , err error ) {
736
- value , _ = strconv .ParseFloat (val , 64 )
737
+ if value , err = strconv .ParseFloat (val , 64 ); err != nil {
738
+ return
739
+ }
737
740
if expected , err = strconv .ParseFloat (criteria .Condition , 64 ); err != nil {
738
741
return
739
742
}
@@ -743,25 +746,17 @@ func formulaCriteriaEval(val string, criteria *formulaCriteria) (result bool, er
743
746
case criteriaEq :
744
747
return val == criteria .Condition , err
745
748
case criteriaLe :
746
- if value , expected , err = prepareValue (val , criteria .Condition ); err != nil {
747
- return
748
- }
749
- return value <= expected , err
749
+ value , expected , e = prepareValue (val , criteria .Condition )
750
+ return value <= expected && e == nil , err
750
751
case criteriaGe :
751
- if value , expected , err = prepareValue (val , criteria .Condition ); err != nil {
752
- return
753
- }
754
- return value >= expected , err
752
+ value , expected , e = prepareValue (val , criteria .Condition )
753
+ return value >= expected && e == nil , err
755
754
case criteriaL :
756
- if value , expected , err = prepareValue (val , criteria .Condition ); err != nil {
757
- return
758
- }
759
- return value < expected , err
755
+ value , expected , e = prepareValue (val , criteria .Condition )
756
+ return value < expected && e == nil , err
760
757
case criteriaG :
761
- if value , expected , err = prepareValue (val , criteria .Condition ); err != nil {
762
- return
763
- }
764
- return value > expected , err
758
+ value , expected , e = prepareValue (val , criteria .Condition )
759
+ return value > expected && e == nil , err
765
760
case criteriaBeg :
766
761
return strings .HasPrefix (val , criteria .Condition ), err
767
762
case criteriaEnd :
0 commit comments