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_xreadlines.py < prev    next >
Encoding:
Python Source  |  2011-02-15  |  670 b   |  25 lines

  1. """Fix "for x in f.xreadlines()" -> "for x in f".
  2.  
  3. This fixer will also convert g(f.xreadlines) into g(f.__iter__)."""
  4. # Author: Collin Winter
  5.  
  6. # Local imports
  7. from .. import fixer_base
  8. from ..fixer_util import Name
  9.  
  10.  
  11. class FixXreadlines(fixer_base.BaseFix):
  12.     PATTERN = """
  13.     power< call=any+ trailer< '.' 'xreadlines' > trailer< '(' ')' > >
  14.     |
  15.     power< any+ trailer< '.' no_call='xreadlines' > >
  16.     """
  17.  
  18.     def transform(self, node, results):
  19.         no_call = results.get("no_call")
  20.  
  21.         if no_call:
  22.             no_call.replace(Name("__iter__", prefix=no_call.get_prefix()))
  23.         else:
  24.             node.replace([x.clone() for x in results["call"]])
  25.