package org.radrails.rails.internal.parser.warnings; import org.jruby.ast.FCallNode; import org.jruby.ast.VCallNode; import org.radrails.rails.internal.core.RailsPlugin; import org.rubypeople.rdt.core.parser.warnings.RubyLintVisitor; public abstract class DeprecationVisitor extends RubyLintVisitor { private String[] deprecated; private String[] solutions; public DeprecationVisitor(String[] deprecated, String solution) { super(RailsPlugin.getInstance().getOptions(), ""); this.deprecated = deprecated; this.solutions = new String[deprecated.length]; for (int i = 0; i < solutions.length; i++) solutions[i] = solution; } public DeprecationVisitor(String[] deprecated, String[] solutions) { super(RailsPlugin.getInstance().getOptions(), ""); this.deprecated = deprecated; this.solutions = solutions; } @Override public Object visitFCallNode(FCallNode iVisited) { String name = iVisited.getName(); for (int i = 0; i < deprecated.length; i++) { if (!name.equals(deprecated[i])) continue; createProblem(iVisited.getPosition(), solutions[i]); break; } return super.visitFCallNode(iVisited); } @Override public Object visitVCallNode(VCallNode iVisited) { String name = iVisited.getName(); for (int i = 0; i < deprecated.length; i++) { if (!name.equals(deprecated[i])) continue; createProblem(iVisited.getPosition(), solutions[i]); break; } return super.visitVCallNode(iVisited); } }