Example usage for org.eclipse.jdt.internal.core.search StringOperation getPatternMatchingRegions

List of usage examples for org.eclipse.jdt.internal.core.search StringOperation getPatternMatchingRegions

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.core.search StringOperation getPatternMatchingRegions.

Prototype

public static final int[] getPatternMatchingRegions(String pattern, int patternStart, int patternEnd,
        String name, int nameStart, int nameEnd, boolean isCaseSensitive) 

Source Link

Document

Answers all the regions in a given name matching a given pattern pattern (e.g.

Usage

From source file:x10dt.ui.typeHierarchy.SearchUtils.java

License:Open Source License

public static final int[] getMatchingRegions(String pattern, String name, int matchRule) {
    if (name == null)
        return null;
    final int nameLength = name.length();
    if (pattern == null) {
        return new int[] { 0, nameLength };
    }/*  ww  w  .j a v a2s  . c o  m*/
    final int patternLength = pattern.length();
    boolean countMatch = false;
    switch (matchRule) {
    case SearchPattern.RULE_EXACT_MATCH:
        if (patternLength == nameLength && pattern.equalsIgnoreCase(name)) {
            return new int[] { 0, patternLength };
        }
        break;
    case SearchPattern.RULE_EXACT_MATCH | SearchPattern.RULE_CASE_SENSITIVE:
        if (patternLength == nameLength && pattern.equals(name)) {
            return new int[] { 0, patternLength };
        }
        break;
    case SearchPattern.RULE_PREFIX_MATCH:
        if (patternLength <= nameLength && name.substring(0, patternLength).equalsIgnoreCase(pattern)) {
            return new int[] { 0, patternLength };
        }
        break;
    case SearchPattern.RULE_PREFIX_MATCH | SearchPattern.RULE_CASE_SENSITIVE:
        if (name.startsWith(pattern)) {
            return new int[] { 0, patternLength };
        }
        break;
    //         case SearchPattern.RULE_CAMELCASE_SAME_PART_COUNT_MATCH:
    //            countMatch = true;
    //$FALL-THROUGH$
    case SearchPattern.RULE_CAMELCASE_MATCH:
        if (patternLength <= nameLength) {
            int[] regions = StringOperation.getCamelCaseMatchingRegions(pattern, 0, patternLength, name, 0,
                    nameLength, countMatch);
            if (regions != null)
                return regions;
            if (name.substring(0, patternLength).equalsIgnoreCase(pattern)) {
                return new int[] { 0, patternLength };
            }
        }
        break;
    //         case SearchPattern.RULE_CAMELCASE_SAME_PART_COUNT_MATCH | SearchPattern.RULE_CASE_SENSITIVE:
    //            countMatch = true;
    //$FALL-THROUGH$
    case SearchPattern.RULE_CAMELCASE_MATCH | SearchPattern.RULE_CASE_SENSITIVE:
        if (patternLength <= nameLength) {
            return StringOperation.getCamelCaseMatchingRegions(pattern, 0, patternLength, name, 0, nameLength,
                    countMatch);
        }
        break;
    case SearchPattern.RULE_PATTERN_MATCH:
        return StringOperation.getPatternMatchingRegions(pattern, 0, patternLength, name, 0, nameLength, false);
    case SearchPattern.RULE_PATTERN_MATCH | SearchPattern.RULE_CASE_SENSITIVE:
        return StringOperation.getPatternMatchingRegions(pattern, 0, patternLength, name, 0, nameLength, true);
    }
    return null;
}