[PATCH 4 of 4] py3: use bytestr wrapper in revsetlang.tokenize()

Augie Fackler raf at durin42.com
Thu Mar 16 12:59:20 EDT 2017


On Fri, Mar 17, 2017 at 12:31:13AM +0900, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1489667781 -32400
> #      Thu Mar 16 21:36:21 2017 +0900
> # Node ID d21fd508342b1d43ebefaac65f1d6e2e5ca60704
> # Parent  649866574c86bae35ab8143c50af72bee7fef810
> py3: use bytestr wrapper in revsetlang.tokenize()

Sure, queued, thanks. Much cleaner IMO.

>
> This backs out 77270ec0cdd9 and wraps program by bytestr() instead.
>
> diff --git a/mercurial/revsetlang.py b/mercurial/revsetlang.py
> --- a/mercurial/revsetlang.py
> +++ b/mercurial/revsetlang.py
> @@ -78,6 +78,7 @@ def tokenize(program, lookup=None, symin
>      [('symbol', '@', 0), ('::', None, 1), ('end', None, 3)]
>
>      '''
> +    program = pycompat.bytestr(program)
>      if syminitletters is None:
>          syminitletters = _syminitletters
>      if symletters is None:
> @@ -100,7 +101,7 @@ def tokenize(program, lookup=None, symin
>
>      pos, l = 0, len(program)
>      while pos < l:
> -        c = program[pos:pos + 1]
> +        c = program[pos]
>          if c.isspace(): # skip inter-token whitespace
>              pass
>          elif c == ':' and program[pos:pos + 2] == '::': # look ahead carefully
> @@ -118,14 +119,14 @@ def tokenize(program, lookup=None, symin
>                program[pos:pos + 2] in ("r'", 'r"')): # handle quoted strings
>              if c == 'r':
>                  pos += 1
> -                c = program[pos:pos + 1]
> +                c = program[pos]
>                  decode = lambda x: x
>              else:
>                  decode = parser.unescapestr
>              pos += 1
>              s = pos
>              while pos < l: # find closing quote
> -                d = program[pos:pos + 1]
> +                d = program[pos]
>                  if d == '\\': # skip over escaped characters
>                      pos += 2
>                      continue
> @@ -140,11 +141,10 @@ def tokenize(program, lookup=None, symin
>              s = pos
>              pos += 1
>              while pos < l: # find end of symbol
> -                d = program[pos:pos + 1]
> +                d = program[pos]
>                  if d not in symletters:
>                      break
> -                if (d == '.'
> -                    and program[pos - 1:pos] == '.'): # special case for ..
> +                if d == '.' and program[pos - 1] == '.': # special case for ..
>                      pos -= 1
>                      break
>                  pos += 1
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list