Extend rule structure and nip rule parser (#16)

This commit is contained in:
Arto Simonyan
2024-05-01 01:34:57 +03:00
committed by GitHub
parent e27064213f
commit 345e37bbf9
5 changed files with 10 additions and 4 deletions

View File

@@ -34,7 +34,7 @@ func TestEvaluate(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
rule, err := nip.ParseLine(tt.args.nipRule)
rule, err := nip.ParseLine(tt.args.nipRule, "dummy", 0)
require.NoError(t, err)
if _, got := Evaluate(tt.args.i, []nip.Rule{rule}); got != tt.want {

View File

@@ -45,7 +45,7 @@ func ParseNIPFile(filePath string) ([]Rule, error) {
lineNumber := 0
for fileScanner.Scan() {
lineNumber++
rule, err := ParseLine(fileScanner.Text())
rule, err := ParseLine(fileScanner.Text(), filePath, lineNumber)
if errors.Is(err, errEmptyLine) {
continue
}

View File

@@ -14,7 +14,7 @@ var (
propertyNameRegex = regexp.MustCompile(`\[(.*)\]`)
)
func ParseLine(line string) (Rule, error) {
func ParseLine(line string, filename string, linenum int) (Rule, error) {
line = lineCleanup(line)
if line == "" {
return Rule{}, errEmptyLine
@@ -46,6 +46,9 @@ func ParseLine(line string) (Rule, error) {
Properties: properties,
Stats: stats,
MaxQuantity: maxQuantity,
Filename: filename,
LineNumber: linenum,
Enabled: true,
}, nil
}

View File

@@ -10,7 +10,7 @@ import (
const nipLine = "[type] == boots && [quality] == rare # [frw] >= 10 && [fireresist] >= 10 && ([lightresist]+[coldresist] >= 10 && [dexterity] >= 1 && [fireresist]+[poisonresist] >= 10) // this is a comment"
func Test_parseLine(t *testing.T) {
rules, err := ParseLine(nipLine)
rules, err := ParseLine(nipLine, "dummy", 0)
require.NoError(t, err)
expected := Rule{

View File

@@ -16,6 +16,9 @@ type Rule struct {
Properties []Group
Stats []Group
MaxQuantity []Group
Filename string
LineNumber int
Enabled bool
}
type Keyword string