Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/hgweb/webcommands.py @ 19631:cf9e5e45c1d3
hgweb: add dynamic search function selection, depending on the query
This allows adding other specific search functions, in addition to current
keyword search.
author | Alexander Plavin <alexander@plav.in> |
---|---|
date | Thu, 22 Aug 2013 16:45:23 +0400 |
parents | 983bb4069004 |
children | 299511aabf85 |
comparison
equal
deleted
inserted
replaced
19630:bb67f630b335 | 19631:cf9e5e45c1d3 |
---|---|
136 if miss: | 136 if miss: |
137 continue | 137 continue |
138 | 138 |
139 yield ctx | 139 yield ctx |
140 | 140 |
141 searchfuncs = { | |
142 'keyword': keywordsearch, | |
143 } | |
144 | |
145 def getsearchmode(): | |
146 return 'keyword' | |
147 | |
141 def changelist(**map): | 148 def changelist(**map): |
142 count = 0 | 149 count = 0 |
143 | 150 |
144 for ctx in keywordsearch(): | 151 for ctx in searchfunc(): |
145 count += 1 | 152 count += 1 |
146 n = ctx.node() | 153 n = ctx.node() |
147 showtags = webutil.showtag(web.repo, tmpl, 'changelogtag', n) | 154 showtags = webutil.showtag(web.repo, tmpl, 'changelogtag', n) |
148 files = webutil.listfilediffs(tmpl, ctx.files(), n, web.maxfiles) | 155 files = webutil.listfilediffs(tmpl, ctx.files(), n, web.maxfiles) |
149 | 156 |
178 lessvars['revcount'] = max(revcount / 2, 1) | 185 lessvars['revcount'] = max(revcount / 2, 1) |
179 lessvars['rev'] = query | 186 lessvars['rev'] = query |
180 morevars = copy.copy(tmpl.defaults['sessionvars']) | 187 morevars = copy.copy(tmpl.defaults['sessionvars']) |
181 morevars['revcount'] = revcount * 2 | 188 morevars['revcount'] = revcount * 2 |
182 morevars['rev'] = query | 189 morevars['rev'] = query |
190 | |
191 mode = getsearchmode() | |
192 searchfunc = searchfuncs[mode] | |
183 | 193 |
184 tip = web.repo['tip'] | 194 tip = web.repo['tip'] |
185 parity = paritygen(web.stripecount) | 195 parity = paritygen(web.stripecount) |
186 | 196 |
187 return tmpl('search', query=query, node=tip.hex(), | 197 return tmpl('search', query=query, node=tip.hex(), |