blob: 6bcbb4dd1dafa242a69142e297392f2facd972f2 [file] [log] [blame]
package org.eclipse.dltk.ruby.debug;
import org.eclipse.dltk.debug.core.model.ArrayScriptType;
import org.eclipse.dltk.debug.core.model.AtomicScriptType;
import org.eclipse.dltk.debug.core.model.ComplexScriptType;
import org.eclipse.dltk.debug.core.model.HashScriptType;
import org.eclipse.dltk.debug.core.model.IScriptType;
import org.eclipse.dltk.debug.core.model.IScriptTypeFactory;
import org.eclipse.dltk.debug.core.model.StringScriptType;
public class RubyTypeFactory implements IScriptTypeFactory {
private static final String[] atomicTypes = { "Bignum", "FalseClass", //$NON-NLS-1$ //$NON-NLS-2$
"Fixnum", "Float", "Integer", "NilClass", "Numeric", "Range", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
"Regexp", "Symbol", "TrueClass" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@Override
public IScriptType buildType(String type) {
if (STRING.equalsIgnoreCase(type)) {
return new StringScriptType(type);
}
if (ARRAY.equalsIgnoreCase(type)) {
return new ArrayScriptType();
}
if (HASH.equals(type)) {
return new HashScriptType();
}
for (int i = 0; i < atomicTypes.length; ++i) {
if (atomicTypes[i].equals(type)) {
return new AtomicScriptType(type);
}
}
if (RubySetScriptType.SET.equals(type)) {
return new RubySetScriptType();
}
return new ComplexScriptType(type);
}
}