more options for segments iterate

This commit is contained in:
lionsoul2014 2026-06-23 10:07:48 +08:00
parent 7b320846c9
commit fc46254325
1 changed files with 10 additions and 2 deletions

View File

@ -187,7 +187,7 @@ func IPMiddle(sip, eip []byte) ([]byte, error) {
return IPHalf(buf), nil
}
func IterateSegments(reader io.Reader, autoMerge bool, before func(l string), filter func(region string) (string, error), cRegion func(string) *Region, done func(seg *Segment) error) (int, int, error) {
func IterateSegmentsFull(reader io.Reader, sep string, autoMerge bool, before func(l string), filter func(region string) (string, error), cRegion func(string) *Region, done func(seg *Segment) error) (int, int, error) {
var last *Segment = nil
var totalCount, mergeCount = 0, 0
var scanner = bufio.NewScanner(reader)
@ -207,7 +207,7 @@ func IterateSegments(reader io.Reader, autoMerge bool, before func(l string), fi
before(l)
}
sip, eip, region, err := ParseSegment(l, "|")
sip, eip, region, err := ParseSegment(l, sep)
if err != nil {
return totalCount, mergeCount, err
}
@ -256,6 +256,14 @@ func IterateSegments(reader io.Reader, autoMerge bool, before func(l string), fi
return totalCount, mergeCount, nil
}
func IterateSegments(reader io.Reader, autoMerge bool, before func(l string), filter func(region string) (string, error), cRegion func(string) *Region, done func(seg *Segment) error) (int, int, error) {
return IterateSegmentsFull(reader, "|", autoMerge, before, filter, cRegion, done)
}
func IterateSegmentsBase(reader io.Reader, done func(seg *Segment) error) (int, int, error) {
return IterateSegmentsFull(reader, "|", false, nil, nil, NewRegion, done)
}
func CheckSegments(segList []*Segment) error {
var last *Segment
for _, seg := range segList {