clang 20.0.0 (based on r547379) from build 12806354. Bug: http://b/379133546 Test: N/A Change-Id: I2eb8938af55d809de674be63cb30cf27e801862b Upstream-Commit: ad834e67b1105d15ef907f6255d4c96e8e733f57
40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
"""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
|