comparison mercurial/revsetlang.py @ 41220:8d26026b3335

revert: extract "%ld" formatting in a _formatintlist function We'll have to reuse this logic in different places.
author Boris Feld <boris.feld@octobus.net>
date Fri, 04 Jan 2019 05:16:57 +0100
parents e5b227f41e4a
children 73203cdfe3fe
comparison
equal deleted inserted replaced
41219:e5b227f41e4a 41220:8d26026b3335
605 if l == 0: 605 if l == 0:
606 return "_list('')" 606 return "_list('')"
607 elif l == 1: 607 elif l == 1:
608 return _formatargtype(t, s[0]) 608 return _formatargtype(t, s[0])
609 elif t == 'd': 609 elif t == 'd':
610 return "_intlist('%s')" % "\0".join('%d' % int(a) for a in s) 610 return _formatintlist(s)
611 elif t == 's': 611 elif t == 's':
612 return "_list(%s)" % _quote("\0".join(s)) 612 return "_list(%s)" % _quote("\0".join(s))
613 elif t == 'n': 613 elif t == 'n':
614 return "_hexlist('%s')" % "\0".join(node.hex(a) for a in s) 614 return "_hexlist('%s')" % "\0".join(node.hex(a) for a in s)
615 elif t == 'b': 615 elif t == 'b':
618 except AttributeError: 618 except AttributeError:
619 raise TypeError 619 raise TypeError
620 620
621 m = l // 2 621 m = l // 2
622 return '(%s or %s)' % (_formatlistexp(s[:m], t), _formatlistexp(s[m:], t)) 622 return '(%s or %s)' % (_formatlistexp(s[:m], t), _formatlistexp(s[m:], t))
623
624 def _formatintlist(data):
625 try:
626 l = len(data)
627 if l == 0:
628 return "_list('')"
629 elif l == 1:
630 return _formatargtype('d', data[0])
631 return "_intlist('%s')" % "\0".join('%d' % int(a) for a in data)
632 except (TypeError, ValueError):
633 raise error.ParseError(_('invalid argument for revspec'))
623 634
624 def _formatparamexp(args, t): 635 def _formatparamexp(args, t):
625 return ', '.join(_formatargtype(t, a) for a in args) 636 return ', '.join(_formatargtype(t, a) for a in args)
626 637
627 _formatlistfuncs = { 638 _formatlistfuncs = {