~ubuntu-branches/ubuntu/maverick/python3.1/maverick

« back to all changes in this revision

Viewing changes to Lib/lib2to3/fixes/fix_ws_comma.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-03-23 00:01:27 UTC
  • Revision ID: james.westby@ubuntu.com-20090323000127-5fstfxju4ufrhthq
Tags: upstream-3.1~a1+20090322
ImportĀ upstreamĀ versionĀ 3.1~a1+20090322

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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