home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 June / maximum-cd-2011-06.iso / DiscContents / LibO_3.3.1_Win_x86_install_multi.exe / libreoffice1.cab / fix_ws_comma.py < prev    next >
Encoding:
Python Source  |  2011-02-15  |  1.1 KB  |  40 lines

  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
  40.