comparison mercurial/revsetlang.py @ 35558:dfc628611144

revsetlang: use str.find() to scan expr in formatspec() There should be no need to walk character one by one in Python.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 01 Apr 2017 16:55:28 +0900
parents 2df8d12f23bc
children a480551bd1b4
comparison
equal deleted inserted replaced
35557:2df8d12f23bc 35558:dfc628611144
622 expr = pycompat.bytestr(expr) 622 expr = pycompat.bytestr(expr)
623 ret = [] 623 ret = []
624 pos = 0 624 pos = 0
625 arg = 0 625 arg = 0
626 while pos < len(expr): 626 while pos < len(expr):
627 c = expr[pos] 627 q = expr.find('%', pos)
628 if c == '%': 628 if q < 0:
629 pos += 1 629 ret.append(expr[pos:])
630 break
631 ret.append(expr[pos:q])
632 pos = q + 1
633 if True:
630 d = expr[pos] 634 d = expr[pos]
631 if d == '%': 635 if d == '%':
632 ret.append(d) 636 ret.append(d)
633 elif d in 'dsnbr': 637 elif d in 'dsnbr':
634 ret.append(argtype(d, args[arg])) 638 ret.append(argtype(d, args[arg]))
640 ret.append(listexp(list(args[arg]), d)) 644 ret.append(listexp(list(args[arg]), d))
641 arg += 1 645 arg += 1
642 else: 646 else:
643 raise error.Abort(_('unexpected revspec format character %s') 647 raise error.Abort(_('unexpected revspec format character %s')
644 % d) 648 % d)
645 else:
646 ret.append(c)
647 pos += 1 649 pos += 1
648 650
649 return ''.join(ret) 651 return ''.join(ret)
650 652
651 def prettyformat(tree): 653 def prettyformat(tree):