package org.erlide.engine.internal.model.erlang;
import org.eclipse.core.runtime.Path;
import org.erlide.engine.ErlangEngine;
import org.erlide.engine.internal.model.SourceRange;
import org.erlide.engine.model.IParent;
import org.erlide.engine.model.erlang.IErlMember;
import org.erlide.engine.model.erlang.ISourceRange;
import org.erlide.engine.model.root.IErlModule;
/**
*
* @author Vlad Dumitrescu
*/
public abstract class ErlMember extends SourceRefElement implements IErlMember {
int fNameRangeOffset, fNameRangeLength;
protected ErlMember(final IParent parent, final String name) {
super(parent, name);
}
@Override
public void setNameRange(final int offset, final int length) {
fNameRangeOffset = offset;
fNameRangeLength = length;
}
@Override
public ISourceRange getNameRange() {
if (fNameRangeOffset == 0 && fNameRangeLength == 0) {
return getSourceRange();
}
return new SourceRange(fNameRangeOffset, fNameRangeLength);
}
@Override
public String getModuleName() {
final IErlModule module = ErlangEngine.getInstance().getModelUtilService()
.getModule(this);
if (module != null) {
return module.getName();
}
final String path = getFilePath();
if (path != null) {
return new Path(path).lastSegment();
}
return null;
}
protected static String uptoEndOfToken(final String s) {
if (s == null || s.length() == 0) {
return s;
}
int i = 0;
if (s.charAt(0) == '\'') {
i = s.indexOf('\'', 1);
}
if (i == -1) {
i = 0;
}
int j = s.indexOf(',', i);
if (j == 0 || j == -1) {
j = s.length();
}
final int k = s.indexOf('(', i);
if (k < j && k > 0) {
j = k;
}
return s.substring(0, j).trim();
}
}