apply the field-list filter

This commit is contained in:
lion 2025-09-04 15:22:24 +08:00
parent 2735819b4f
commit 34e89d3f50
2 changed files with 21 additions and 2 deletions

View File

@ -38,7 +38,11 @@ func NewProcessor(srcFile string, dstFile string, fields []int) (*Processor, err
return &Processor{ return &Processor{
srcHandle: srcHandle, srcHandle: srcHandle,
dstHandle: dstHandle, dstHandle: dstHandle,
segments: []*Segment{},
// filter fields index
fields: fields,
segments: []*Segment{},
}, nil }, nil
} }
@ -60,7 +64,7 @@ func (p *Processor) loadSegments() error {
return err return err
} }
// slog.Info("filtered", "region", region) // slog.Info("filtered", "source", seg.Region, "filtered", region)
seg.Region = region seg.Region = region
p.segments = append(p.segments, seg) p.segments = append(p.segments, seg)
return nil return nil

View File

@ -121,6 +121,21 @@ func TestSplitSegmentV4(t *testing.T) {
} }
} }
func TestRegionFiltering(t *testing.T) {
var line = "2001:1203:31:8000::|2001:1203:31:bfff:ffff:ffff:ffff:ffff||墨西哥|瓜纳华托州||||专线用户|"
seg, err := SegmentFrom(line)
if err != nil {
t.Fatalf("failed to parse segment '%s': %s", line, err)
}
fReg, err := RegionFiltering(seg.Region, []int{1, 2, 4, 6})
if err != nil {
t.Fatalf("failed to filter region '%s': %s", seg.Region, err)
}
fmt.Printf("region: %s, filtered: %s\n", seg.Region, fReg)
}
func TestSplitSegmentV6(t *testing.T) { func TestSplitSegmentV6(t *testing.T) {
var str = "fec0::|ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff||瑞士|弗里堡州||||专线用户|IANA" var str = "fec0::|ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff||瑞士|弗里堡州||||专线用户|IANA"
seg, err := SegmentFrom(str) seg, err := SegmentFrom(str)