You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
"""Fixer that changes 'a ,b' into 'a, b'.
|
|
|
|
This also changes '{a :b}' into '{a: b}', but does not touch other
|
|
uses of colons. It does not touch other uses of whitespace.
|
|
|
|
"""
|
|
|
|
from .. import pytree
|
|
from ..pgen2 import token
|
|
from .. import fixer_base
|
|
|
|
class FixWsComma(fixer_base.BaseFix):
|
|
|
|
explicit = True # The user must ask for this fixers
|
|
|
|
PATTERN = """
|
|
any<(not(',') any)+ ',' ((not(',') any)+ ',')* [not(',') any]>
|
|
"""
|
|
|
|
COMMA = pytree.Leaf(token.COMMA, ",")
|
|
COLON = pytree.Leaf(token.COLON, ":")
|
|
SEPS = (COMMA, COLON)
|
|
|
|
def transform(self, node, results):
|
|
new = node.clone()
|
|
comma = False
|
|
for child in new.children:
|
|
if child in self.SEPS:
|
|
prefix = child.prefix
|
|
if prefix.isspace() and "\n" not in prefix:
|
|
child.prefix = ""
|
|
comma = True
|
|
else:
|
|
if comma:
|
|
prefix = child.prefix
|
|
if not prefix:
|
|
child.prefix = " "
|
|
comma = False
|
|
return new
|