propertyvisitor.java

来自「Python Development Environment (Python I」· Java 代码 · 共 61 行

JAVA
61
字号
package org.python.pydev.refactoring.ast.visitors.context;

import org.python.pydev.parser.jython.SimpleNode;
import org.python.pydev.parser.jython.ast.Assign;
import org.python.pydev.parser.jython.ast.Call;
import org.python.pydev.parser.jython.ast.ClassDef;
import org.python.pydev.parser.jython.ast.FunctionDef;
import org.python.pydev.refactoring.ast.adapters.AbstractNodeAdapter;
import org.python.pydev.refactoring.ast.adapters.AbstractScopeNode;
import org.python.pydev.refactoring.ast.adapters.ModuleAdapter;
import org.python.pydev.refactoring.ast.adapters.PropertyAdapter;

public class PropertyVisitor extends AbstractContextVisitor<PropertyAdapter> {

	public PropertyVisitor(ModuleAdapter module, AbstractScopeNode<?> parent) {
		super(module, parent);
	}

	@Override
	protected PropertyAdapter createAdapter(AbstractScopeNode<?> parent, SimpleNode node) {
		return new PropertyAdapter(moduleAdapter, parent, node, moduleAdapter.getEndLineDelimiter());
	}

	@Override
	public Object visitCall(Call node) throws Exception {
		if (nodeHelper.isAssign(stack.peek())) {
			registerInContext(stack.peek());
		}
		return null;
	}

	@Override
	public Object visitAssign(Assign node) throws Exception {
		if (nodeHelper.isPropertyAssign(node)) {
			stack.push(node);
			visit(node.value);
			stack.pop();
		}
		return null;
	}

	@Override
	public Object visitFunctionDef(FunctionDef node) throws Exception {
		return null;
	}

	/**
	 * Traverse class body only
	 */
	@Override
	public Object visitClassDef(ClassDef node) throws Exception {
		AbstractNodeAdapter context = before(node);
		pushParent(context);
		visit(node.body);
		parents.pop();
		after();
		return null;
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?