equal
deleted
inserted
replaced
|
1 """Fixer that changes 'a ,b' into 'a, b'. |
|
2 |
|
3 This also changes '{a :b}' into '{a: b}', but does not touch other |
|
4 uses of colons. It does not touch other uses of whitespace. |
|
5 |
|
6 """ |
|
7 |
|
8 from .. import pytree |
|
9 from ..pgen2 import token |
|
10 from .. import fixer_base |
|
11 |
|
12 class FixWsComma(fixer_base.BaseFix): |
|
13 |
|
14 explicit = True # The user must ask for this fixers |
|
15 |
|
16 PATTERN = """ |
|
17 any<(not(',') any)+ ',' ((not(',') any)+ ',')* [not(',') any]> |
|
18 """ |
|
19 |
|
20 COMMA = pytree.Leaf(token.COMMA, ",") |
|
21 COLON = pytree.Leaf(token.COLON, ":") |
|
22 SEPS = (COMMA, COLON) |
|
23 |
|
24 def transform(self, node, results): |
|
25 new = node.clone() |
|
26 comma = False |
|
27 for child in new.children: |
|
28 if child in self.SEPS: |
|
29 prefix = child.get_prefix() |
|
30 if prefix.isspace() and "\n" not in prefix: |
|
31 child.set_prefix("") |
|
32 comma = True |
|
33 else: |
|
34 if comma: |
|
35 prefix = child.get_prefix() |
|
36 if not prefix: |
|
37 child.set_prefix(" ") |
|
38 comma = False |
|
39 return new |