def visit_Delete(self, node):
"""
Delete(expr* targets)
"""
id = ''
num = ''
key = ''
slice = ''
attr = ''
for stmt in node.targets:
if isinstance(stmt, (ast.Name)):
id = self.visit(stmt)
elif isinstance(stmt, (ast.Subscript)):
if isinstance(stmt.value, (ast.Name)):
id = self.visit(stmt.value)
if isinstance(stmt.slice, (ast.Index)):
if isinstance(stmt.slice.value, (ast.Str)):
key = self.visit(stmt.slice)
if isinstance(stmt.slice.value, (ast.Num)):
num = self.visit(stmt.slice)
if isinstance(stmt.slice, (ast.Slice)):
slice = self.visit(stmt.slice)
elif isinstance(stmt, (ast.Attribute)):
if isinstance(stmt.value, (ast.Name)):
id = self.visit(stmt.value)
attr = stmt.attr
if num != '':
""" <Python> del foo[0]
<Ruby> foo.delete_at[0] """
self.write("%s.delete_at(%s)" % (id, num))
elif key != '':
""" <Python> del foo['hoge']
<Ruby> foo.delete['hoge'] """
self.write("%s.delete(%s)" % (id, key))
elif slice != '':
""" <Python> del foo[1:3]
<Ruby> foo.slise!(1...3) """
self.write("%s.slice!(%s)" % (id, slice))
elif attr != '':
""" <Python> del foo.bar
<Ruby> foo.instance_eval { remove_instance_variable(:@bar) } """
self.write("%s.instance_eval { remove_instance_variable(:@%s) }" % (id, attr))
else:
""" <Python> del foo
<Ruby> foo = nil """
self.write("%s = nil" % (id))
评论列表
文章目录