chain evaluation returns true in case of nothing to eval, also fixed stat layer comparison

This commit is contained in:
Héctor Giménez
2023-03-13 21:49:46 +09:00
parent a1a86b9e05
commit bc4402a6a1
3 changed files with 7 additions and 3 deletions

View File

@@ -19,6 +19,10 @@ func (ch *evaluationChain) Add(result bool, operand nip.Operand) {
} }
func (ch *evaluationChain) Evaluate() bool { func (ch *evaluationChain) Evaluate() bool {
if len(ch.links) == 0 {
return true
}
if len(ch.links) == 1 { if len(ch.links) == 1 {
return ch.links[0].Result return ch.links[0].Result
} }

View File

@@ -61,7 +61,7 @@ func checkStat(i data.Item, cmp nip.Comparable) bool {
return true return true
} }
return st[2] == itemStat.Layer return st[1] == itemStat.Layer
} }
func checkProperty(i data.Item, prop nip.Comparable) bool { func checkProperty(i data.Item, prop nip.Comparable) bool {

View File

@@ -27,7 +27,7 @@ func ParseLine(line string) (Rule, error) {
} }
var stats []Group var stats []Group
if len(lineSplit) > 1 { if len(lineSplit) > 1 && strings.TrimSpace(lineSplit[1]) != "" {
stats, err = buildGroups(lineSplit[1]) stats, err = buildGroups(lineSplit[1])
if err != nil { if err != nil {
return Rule{}, err return Rule{}, err
@@ -35,7 +35,7 @@ func ParseLine(line string) (Rule, error) {
} }
var maxQuantity []Group var maxQuantity []Group
if len(lineSplit) > 2 { if len(lineSplit) > 2 && strings.TrimSpace(lineSplit[2]) != "" {
maxQuantity, err = buildGroups(lineSplit[2]) maxQuantity, err = buildGroups(lineSplit[2])
if err != nil { if err != nil {
return Rule{}, err return Rule{}, err