summaryrefslogtreecommitdiffstats
path: root/src/matcher.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2015-03-31 22:05:02 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2015-03-31 22:05:16 +0900
commit50292adacbad70f9561bc1e22ccbd3adea22481a (patch)
tree72a9ba657933585b7c56798b71b64a206144421b /src/matcher.go
parent84a7499ae357bc3b3a82890d2e44d9c300af0c13 (diff)
Implement --toggle-sort option (#173)
Diffstat (limited to 'src/matcher.go')
-rw-r--r--src/matcher.go11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/matcher.go b/src/matcher.go
index a3a9bd0e..0f3b409e 100644
--- a/src/matcher.go
+++ b/src/matcher.go
@@ -15,6 +15,7 @@ type MatchRequest struct {
chunks []*Chunk
pattern *Pattern
final bool
+ sort bool
}
// Matcher is responsible for performing search
@@ -69,6 +70,12 @@ func (m *Matcher) Loop() {
events.Clear()
})
+ if request.sort != m.sort {
+ m.sort = request.sort
+ m.mergerCache = make(map[string]*Merger)
+ clearChunkCache()
+ }
+
// Restart search
patternString := request.pattern.AsString()
var merger *Merger
@@ -203,7 +210,7 @@ func (m *Matcher) scan(request MatchRequest) (*Merger, bool) {
}
// Reset is called to interrupt/signal the ongoing search
-func (m *Matcher) Reset(chunks []*Chunk, patternRunes []rune, cancel bool, final bool) {
+func (m *Matcher) Reset(chunks []*Chunk, patternRunes []rune, cancel bool, final bool, sort bool) {
pattern := m.patternBuilder(patternRunes)
var event util.EventType
@@ -212,5 +219,5 @@ func (m *Matcher) Reset(chunks []*Chunk, patternRunes []rune, cancel bool, final
} else {
event = reqRetry
}
- m.reqBox.Set(event, MatchRequest{chunks, pattern, final})
+ m.reqBox.Set(event, MatchRequest{chunks, pattern, final, sort})
}