diff options
Diffstat (limited to 'lib/python2.7/lib2to3/fixes/fix_ws_comma.py')
-rw-r--r-- | lib/python2.7/lib2to3/fixes/fix_ws_comma.py | 39 |
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 |