Mercurial > public > mercurial-scm > hg
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): |