symbian-qemu-0.9.1-12/python-win32-2.6.1/lib/lib2to3/fixes/fix_intern.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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