comparison mercurial/revset.py @ 26636:ff6baf32b3ba

revset: eliminate temporary reference to subset in limit() and last()
author Yuya Nishihara <yuya@tcha.org>
date Mon, 12 Oct 2015 17:14:47 +0900
parents 56b2bcea2529
children 179764469754
comparison
equal deleted inserted replaced
26635:79d86ab65c9d 26636:ff6baf32b3ba
1295 # i18n: "limit" is a keyword 1295 # i18n: "limit" is a keyword
1296 lim = int(getstring(l[1], _("limit requires a number"))) 1296 lim = int(getstring(l[1], _("limit requires a number")))
1297 except (TypeError, ValueError): 1297 except (TypeError, ValueError):
1298 # i18n: "limit" is a keyword 1298 # i18n: "limit" is a keyword
1299 raise error.ParseError(_("limit expects a number")) 1299 raise error.ParseError(_("limit expects a number"))
1300 ss = subset
1301 os = getset(repo, fullreposet(repo), l[0]) 1300 os = getset(repo, fullreposet(repo), l[0])
1302 result = [] 1301 result = []
1303 it = iter(os) 1302 it = iter(os)
1304 for x in xrange(lim): 1303 for x in xrange(lim):
1305 y = next(it, None) 1304 y = next(it, None)
1306 if y is None: 1305 if y is None:
1307 break 1306 break
1308 elif y in ss: 1307 elif y in subset:
1309 result.append(y) 1308 result.append(y)
1310 return baseset(result) 1309 return baseset(result)
1311 1310
1312 def last(repo, subset, x): 1311 def last(repo, subset, x):
1313 """``last(set, [n])`` 1312 """``last(set, [n])``
1321 # i18n: "last" is a keyword 1320 # i18n: "last" is a keyword
1322 lim = int(getstring(l[1], _("last requires a number"))) 1321 lim = int(getstring(l[1], _("last requires a number")))
1323 except (TypeError, ValueError): 1322 except (TypeError, ValueError):
1324 # i18n: "last" is a keyword 1323 # i18n: "last" is a keyword
1325 raise error.ParseError(_("last expects a number")) 1324 raise error.ParseError(_("last expects a number"))
1326 ss = subset
1327 os = getset(repo, fullreposet(repo), l[0]) 1325 os = getset(repo, fullreposet(repo), l[0])
1328 os.reverse() 1326 os.reverse()
1329 result = [] 1327 result = []
1330 it = iter(os) 1328 it = iter(os)
1331 for x in xrange(lim): 1329 for x in xrange(lim):
1332 y = next(it, None) 1330 y = next(it, None)
1333 if y is None: 1331 if y is None:
1334 break 1332 break
1335 elif y in ss: 1333 elif y in subset:
1336 result.append(y) 1334 result.append(y)
1337 return baseset(result) 1335 return baseset(result)
1338 1336
1339 def maxrev(repo, subset, x): 1337 def maxrev(repo, subset, x):
1340 """``max(set)`` 1338 """``max(set)``