package org.eclipse.dltk.ruby.internal.parser.mixin;
import org.eclipse.core.runtime.Assert;
import org.eclipse.dltk.core.ISourceModule;
import org.eclipse.dltk.core.mixin.IMixinElement;
import org.eclipse.dltk.core.mixin.MixinModel;
import org.eclipse.dltk.ruby.ast.RubyAliasExpression;
public class RubyMixinAlias implements IRubyMixinElement {
private final IMixinElement element;
private final RubyMixinModel model;
private final RubyAliasExpression alias;
private final ISourceModule sourceModule;
public RubyMixinAlias(RubyMixinModel model, String key) {
this.model = model;
element = model.getRawModel().get(key);
Assert.isNotNull(element);
ISourceModule[] sourceModules = element.getSourceModules();
ISourceModule sourceModule2 = null;
RubyAliasExpression alias2 = null;
for (int j = 0; j < sourceModules.length; j++) {
ISourceModule module = sourceModules[j];
Object[] objects = element.getObjects(module);
for (int i = 0; i < objects.length; i++) {
RubyMixinElementInfo info = (RubyMixinElementInfo) objects[i];
if (info.getKind() == RubyMixinElementInfo.K_ALIAS) {
alias2 = (RubyAliasExpression) info.getObject();
sourceModule2 = module;
break;
}
}
}
alias = alias2;
sourceModule = sourceModule2;
Assert.isNotNull(alias);
}
public String getOldKey() {
String old = alias.getOldValue();
return element.getParent().getKey() + MixinModel.SEPARATOR + old;
}
public IRubyMixinElement getOldElement() {
return model.createRubyElement(getOldKey());
}
@Override
public String getKey() {
return element.getKey();
}
public String getNewName() {
return alias.getNewValue();
}
public RubyAliasExpression getAlias() {
return alias;
}
public ISourceModule getSourceModule() {
return sourceModule;
}
}