##// END OF EJS Templates
revset: introduce an internal `_rev` predicate for '%d' usage...
Boris Feld -
r41333:b1ea9061 stable
parent child Browse files
Show More
@@ -1765,6 +1765,20 b' def rev(repo, subset, x):'
1765 return baseset()
1765 return baseset()
1766 return subset & baseset([l])
1766 return subset & baseset([l])
1767
1767
1768 @predicate('_rev(number)', safe=True)
1769 def _rev(repo, subset, x):
1770 # internal version of "rev(x)" that raise error if "x" is invalid
1771 # i18n: "rev" is a keyword
1772 l = getargs(x, 1, 1, _("rev requires one argument"))
1773 try:
1774 # i18n: "rev" is a keyword
1775 l = int(getstring(l[0], _("rev requires a number")))
1776 except (TypeError, ValueError):
1777 # i18n: "rev" is a keyword
1778 raise error.ParseError(_("rev expects a number"))
1779 repo.changelog.node(l) # check that the rev exists
1780 return subset & baseset([l])
1781
1768 @predicate('revset(set)', safe=True, takeorder=True)
1782 @predicate('revset(set)', safe=True, takeorder=True)
1769 def revsetpredicate(repo, subset, x, order):
1783 def revsetpredicate(repo, subset, x, order):
1770 """Strictly interpret the content as a revset.
1784 """Strictly interpret the content as a revset.
@@ -585,7 +585,7 b' def _quote(s):'
585
585
586 def _formatargtype(c, arg):
586 def _formatargtype(c, arg):
587 if c == 'd':
587 if c == 'd':
588 return 'rev(%d)' % int(arg)
588 return '_rev(%d)' % int(arg)
589 elif c == 's':
589 elif c == 's':
590 return _quote(arg)
590 return _quote(arg)
591 elif c == 'r':
591 elif c == 'r':
@@ -663,9 +663,9 b' def formatspec(expr, *args):'
663 >>> formatspec(b'%r:: and %lr', b'10 or 11', (b"this()", b"that()"))
663 >>> formatspec(b'%r:: and %lr', b'10 or 11', (b"this()", b"that()"))
664 '(10 or 11):: and ((this()) or (that()))'
664 '(10 or 11):: and ((this()) or (that()))'
665 >>> formatspec(b'%d:: and not %d::', 10, 20)
665 >>> formatspec(b'%d:: and not %d::', 10, 20)
666 'rev(10):: and not rev(20)::'
666 '_rev(10):: and not _rev(20)::'
667 >>> formatspec(b'%ld or %ld', [], [1])
667 >>> formatspec(b'%ld or %ld', [], [1])
668 "_list('') or rev(1)"
668 "_list('') or _rev(1)"
669 >>> formatspec(b'keyword(%s)', b'foo\\xe9')
669 >>> formatspec(b'keyword(%s)', b'foo\\xe9')
670 "keyword('foo\\\\xe9')"
670 "keyword('foo\\\\xe9')"
671 >>> b = lambda: b'default'
671 >>> b = lambda: b'default'
General Comments 0
You need to be logged in to leave comments. Login now