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_intern.py < prev    next >
Encoding:
Python Source  |  2011-02-15  |  1.3 KB  |  44 lines

  1. # Copyright 2006 Georg Brandl.
  2. # Licensed to PSF under a Contributor Agreement.
  3.  
  4. """Fixer for intern().
  5.  
  6. intern(s) -> sys.intern(s)"""
  7.  
  8. # Local imports
  9. from .. import pytree
  10. from .. import fixer_base
  11. from ..fixer_util import Name, Attr
  12.  
  13.  
  14. class FixIntern(fixer_base.BaseFix):
  15.  
  16.     PATTERN = """
  17.     power< 'intern'
  18.            trailer< lpar='('
  19.                     ( not(arglist | argument<any '=' any>) obj=any
  20.                       | obj=arglist<(not argument<any '=' any>) any ','> )
  21.                     rpar=')' >
  22.            after=any*
  23.     >
  24.     """
  25.  
  26.     def transform(self, node, results):
  27.         syms = self.syms
  28.         obj = results["obj"].clone()
  29.         if obj.type == syms.arglist:
  30.             newarglist = obj.clone()
  31.         else:
  32.             newarglist = pytree.Node(syms.arglist, [obj.clone()])
  33.         after = results["after"]
  34.         if after:
  35.             after = [n.clone() for n in after]
  36.         new = pytree.Node(syms.power,
  37.                           Attr(Name("sys"), Name("intern")) +
  38.                           [pytree.Node(syms.trailer,
  39.                                        [results["lpar"].clone(),
  40.                                         newarglist,
  41.                                         results["rpar"].clone()])] + after)
  42.         new.set_prefix(node.get_prefix())
  43.         return new
  44.