blob: 26de3c288b7da28e2ae171f06afddede18c3dc52 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2016 xored software, Inc. and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* xored software, Inc. - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.ruby.internal.core.search;
import org.eclipse.dltk.core.search.SearchPatternProcessor;
public class RubySearchPatternProcessor extends SearchPatternProcessor {
private static final String TYPE_DELIMITER = "::"; //$NON-NLS-1$
private static final String METHOD_DELIMITER = "::"; //$NON-NLS-1$
@Override
public char[] extractDeclaringTypeQualification(String pattern) {
final int pos = pattern.lastIndexOf(METHOD_DELIMITER);
if (pos != -1) {
final String type = pattern.substring(0, pos);
return extractTypeQualification(type);
}
return null;
}
@Override
public char[] extractDeclaringTypeSimpleName(String pattern) {
final int pos = pattern.lastIndexOf(METHOD_DELIMITER);
if (pos != -1) {
final String type = pattern.substring(0, pos);
return extractTypeChars(type).toCharArray();
}
return null;
}
@Override
public char[] extractSelector(String pattern) {
final int pos = pattern.lastIndexOf(METHOD_DELIMITER);
if (pos != -1) {
final int begin = pos + METHOD_DELIMITER.length();
if (begin < pattern.length()) {
final char[] result = new char[pattern.length() - begin];
pattern.getChars(begin, pattern.length(), result, 0);
return result;
}
}
return pattern.toCharArray();
}
@Override
public ITypePattern parseType(String patternString) {
final int pos = patternString.lastIndexOf(TYPE_DELIMITER);
if (pos != -1) {
return new TypePattern(patternString.substring(0, pos).replace(
TYPE_DELIMITER, TYPE_SEPARATOR_STR),
patternString.substring(pos + TYPE_DELIMITER.length()));
} else {
return new TypePattern(null, patternString);
}
}
@Override
public String getDelimiterReplacementString() {
return TYPE_DELIMITER;
}
}