Skip to content
This repository has been archived by the owner on Oct 17, 2018. It is now read-only.

Commit

Permalink
Rename multi-char filter
Browse files Browse the repository at this point in the history
  • Loading branch information
martin-mao committed Mar 21, 2017
1 parent 0ab9ae3 commit 1525a17
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 13 deletions.
16 changes: 9 additions & 7 deletions filters/filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ func newRangeFilter(pattern string, backwards bool, seg chainSegment) (Filter, e
return nil, errInvalidFilterPattern
}

f, err := newMultiCharRangeFilter(pattern[i+1:i+1+endIdx], backwards)
f, err := newMultiCharSequenceFilter(pattern[i+1:i+1+endIdx], backwards)
if err != nil {
return nil, errInvalidFilterPattern
}
Expand Down Expand Up @@ -395,11 +395,13 @@ func newSingleRangeFilter(pattern string, backwards bool) (chainFilter, error) {
}

if len(pattern) > 1 && pattern[1] == rangeChar {
// If there is a '-' char at position 2, look for repeated instances
// of a-z
if len(pattern)%3 != 0 {
return nil, errInvalidFilterPattern
}

var patterns []string
patterns := make([]string, 0, len(pattern)%3)
for i := 0; i < len(pattern); i += 3 {
if pattern[i+1] != rangeChar || pattern[i] > pattern[i+2] {
return nil, errInvalidFilterPattern
Expand Down Expand Up @@ -508,27 +510,27 @@ func (f *singleCharSetFilter) matches(val string) (string, bool) {

// multiCharRangeFilter is a filter that performs matches against multiple sets of chars
// eg. {abc,defg}
type multiCharRangeFilter struct {
type multiCharSequenceFilter struct {
patterns []string
backwards bool
}

func newMultiCharRangeFilter(patterns string, backwards bool) (chainFilter, error) {
func newMultiCharSequenceFilter(patterns string, backwards bool) (chainFilter, error) {
if len(patterns) == 0 {
return nil, errInvalidFilterPattern
}

return &multiCharRangeFilter{
return &multiCharSequenceFilter{
patterns: strings.Split(patterns, multiRangeSplit),
backwards: backwards,
}, nil
}

func (f *multiCharRangeFilter) String() string {
func (f *multiCharSequenceFilter) String() string {
return "Range(\"" + strings.Join(f.patterns, multiRangeSplit) + "\")"
}

func (f *multiCharRangeFilter) matches(val string) (string, bool) {
func (f *multiCharSequenceFilter) matches(val string) (string, bool) {
if len(val) == 0 {
return "", false
}
Expand Down
4 changes: 2 additions & 2 deletions filters/filter_benchmark_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ func BenchmarkMultiRangeFilterTrieSix(b *testing.B) {
}

func benchMultiRangeFilter(b *testing.B, patterns string, backwards bool, vals []string) {
f, _ := newMultiCharRangeFilter(patterns, backwards)
f, _ := newMultiCharSequenceFilter(patterns, backwards)
for n := 0; n < b.N; n++ {
for _, val := range vals {
f.matches(val)
Expand Down Expand Up @@ -276,7 +276,7 @@ func newTestMultiCharRangeSelectFilter(pattern string, backwards bool) (chainFil
patterns := strings.Split(pattern, multiRangeSplit)
filters := make([]chainFilter, len(patterns))
for i, p := range patterns {
f, _ := newMultiCharRangeFilter(p, backwards)
f, _ := newMultiCharSequenceFilter(p, backwards)
filters[i] = f
}

Expand Down
8 changes: 4 additions & 4 deletions filters/filter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,11 +222,11 @@ func TestBadPatterns(t *testing.T) {
}
}

func TestMultiCharRangeFilter(t *testing.T) {
f, err := newMultiCharRangeFilter("", false)
func TestMultiCharSequenceFilter(t *testing.T) {
f, err := newMultiCharSequenceFilter("", false)
require.Error(t, err)

f, err = newMultiCharRangeFilter("test2,test,tent,book", false)
f, err = newMultiCharSequenceFilter("test2,test,tent,book", false)
validateLookup(t, f, "", false, "")
validateLookup(t, f, "t", false, "")
validateLookup(t, f, "tes", false, "")
Expand All @@ -238,7 +238,7 @@ func TestMultiCharRangeFilter(t *testing.T) {
validateLookup(t, f, "test2", true, "")
validateLookup(t, f, "book123", true, "123")

f, err = newMultiCharRangeFilter("test2,test,tent,book", true)
f, err = newMultiCharSequenceFilter("test2,test,tent,book", true)
validateLookup(t, f, "", false, "")
validateLookup(t, f, "t", false, "")
validateLookup(t, f, "tes", false, "")
Expand Down

0 comments on commit 1525a17

Please sign in to comment.