summaryrefslogtreecommitdiff
path: root/lib/python2.7/lib2to3/fixes/fix_ws_comma.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/lib2to3/fixes/fix_ws_comma.py')
-rw-r--r--lib/python2.7/lib2to3/fixes/fix_ws_comma.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/python2.7/lib2to3/fixes/fix_ws_comma.py b/lib/python2.7/lib2to3/fixes/fix_ws_comma.py
new file mode 100644
index 0000000..37ff624
--- /dev/null
+++ b/lib/python2.7/lib2to3/fixes/fix_ws_comma.py
@@ -0,0 +1,39 @@
+"""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, u",")
+ COLON = pytree.Leaf(token.COLON, u":")
+ 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 u"\n" not in prefix:
+ child.prefix = u""
+ comma = True
+ else:
+ if comma:
+ prefix = child.prefix
+ if not prefix:
+ child.prefix = u" "
+ comma = False
+ return new