Mercurial > hg
comparison mercurial/grep.py @ 45697:494642ed3c50
grep: add stub class that maintains cache and states of grep operation
Prepares for extracting stateful functions from commands.grep().
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Wed, 09 Sep 2020 15:56:40 +0900 |
parents | de6f2afc0247 |
children | 41e0cbccb260 |
comparison
equal
deleted
inserted
replaced
45696:de6f2afc0247 | 45697:494642ed3c50 |
---|---|
7 | 7 |
8 from __future__ import absolute_import | 8 from __future__ import absolute_import |
9 | 9 |
10 import difflib | 10 import difflib |
11 | 11 |
12 from . import pycompat | 12 from . import ( |
13 pycompat, | |
14 scmutil, | |
15 util, | |
16 ) | |
13 | 17 |
14 | 18 |
15 def matchlines(body, regexp): | 19 def matchlines(body, regexp): |
16 begin = 0 | 20 begin = 0 |
17 linenum = 0 | 21 linenum = 0 |
67 elif tag == 'replace': | 71 elif tag == 'replace': |
68 for i in pycompat.xrange(alo, ahi): | 72 for i in pycompat.xrange(alo, ahi): |
69 yield (b'-', a[i]) | 73 yield (b'-', a[i]) |
70 for i in pycompat.xrange(blo, bhi): | 74 for i in pycompat.xrange(blo, bhi): |
71 yield (b'+', b[i]) | 75 yield (b'+', b[i]) |
76 | |
77 | |
78 class grepsearcher(object): | |
79 """Search files and revisions for lines matching the given pattern""" | |
80 | |
81 def __init__(self, ui, repo, regexp): | |
82 self._ui = ui | |
83 self._repo = repo | |
84 self._regexp = regexp | |
85 | |
86 self._getfile = util.lrucachefunc(repo.file) | |
87 self._getrenamed = scmutil.getrenamedfn(repo) | |
88 | |
89 self._matches = {} | |
90 self._copies = {} | |
91 self._skip = set() | |
92 self._revfiles = {} |