File: fix_unicode.py

package info (click to toggle)
edk2 0~20181115.85588389-3%2Bdeb10u3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 239,240 kB
  • sloc: ansic: 2,289,349; python: 445,187; perl: 157,704; asm: 59,891; cpp: 21,893; sh: 4,328; pascal: 2,169; makefile: 2,168; xml: 387; lisp: 34
file content (25 lines) | stat: -rw-r--r-- 745 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"""Fixer that changes unicode to str, unichr to chr, and u"..." into "...".

"""

import re
from ..pgen2 import token
from .. import fixer_base

_mapping = {u"unichr" : u"chr", u"unicode" : u"str"}
_literal_re = re.compile(ur"[uU][rR]?[\'\"]")

class FixUnicode(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = "STRING | 'unicode' | 'unichr'"

    def transform(self, node, results):
        if node.type == token.NAME:
            new = node.clone()
            new.value = _mapping[node.value]
            return new
        elif node.type == token.STRING:
            if _literal_re.match(node.value):
                new = node.clone()
                new.value = new.value[1:]
                return new