Beispiel #1
0
 def generic_visit(self, node):
     for field, value in ast.iter_fields(node):
         if isinstance(value, list):
             for item in value:
                 if self.is_node(item):
                     self.visit(item)
         elif self.is_node(value):
             self.visit(value)
Beispiel #2
0
 def generic_visit(self, node):
     for field, value in ast.iter_fields(node):
         if isinstance(value, list):
             for item in value:
                 if self.is_node(item):
                     self.visit(item)
         elif self.is_node(value):
             self.visit(value)
Beispiel #3
0
 def generic_visit(self, node):
     """Called if no explicit visitor function exists for a node."""
     for field, value in ast.iter_fields(node):
         if isinstance(value, list):
             for item in value:
                 if isinstance(item, ast.AST):
                     self.visit(item)
         elif isinstance(value, ast.AST) or isinstance(value, Generable):
             self.visit(value)
Beispiel #4
0
	def visit(self, node):
		eql = False
		if node.__class__ == self.original.__class__:
			eql = True
			for (field, value) in ast.iter_fields(self.original):
				if field != 'ctx' and node.__getattribute__(field) != value:
					debug_print( str(node.__getattribute__(field)) + " != " + str(value) )
					eql = False
			
		if eql:
			import copy
			debug_print( "Found something to replace!!!!" )
			return copy.deepcopy(self.replacement)
		else:
			return self.generic_visit(node)
Beispiel #5
0
    def visit(self, node):
        eql = False
        if node.__class__ == self.original.__class__:
            eql = True
            for (field, value) in ast.iter_fields(self.original):
                if field != 'ctx' and node.__getattribute__(field) != value:
                    debug_print( str(node.__getattribute__(field)) + " != " + str(value) )
                    eql = False
                    break

        if eql:
            import copy
            debug_print( "Found something to replace!!!!" )
            return copy.deepcopy(self.replacement)
        else:
            return self.generic_visit(node)
Beispiel #6
0
     def generic_visit(self, node):
	        for field, old_value in ast.iter_fields(node):
	            old_value = getattr(node, field, None)
	            if isinstance(old_value, list):
	                new_values = []
	                for value in old_value:
	                    if isinstance(value, ast.AST) or isinstance(value, Generable):
	                        value = self.visit(value)
	                        if value is None:
	                            continue
	                        elif not (isinstance(value, ast.AST) or isinstance(value, Generable)):
	                            new_values.extend(value)
	                            continue
	                    new_values.append(value)
	                old_value[:] = new_values
	            elif isinstance(old_value, ast.AST) or isinstance(old_value, Generable):
	                new_node = self.visit(old_value)
	                if new_node is None:
	                    delattr(node, field)
	                else:
	                    setattr(node, field, new_node)
	        return node