Java 类com.intellij.psi.codeStyle.NameUtil 实例源码

项目:intellij-ce-playground    文件:SuspiciousNameCombinationInspectionBase.java   
@Nullable private String findNameGroup(@Nullable final String name) {
  if (name == null) {
    return null;
  }
  String[] words = NameUtil.splitNameIntoWords(name);
  String result = null;
  for(String word: words) {
    String group = myWordToGroupMap.get(word.toLowerCase());
    if (group != null) {
      if (result == null) {
        result = group;
      }
      else if (!result.equals(group)) {
        result = null;
        break;
      }
    }
  }
  return result;
}
项目:intellij-ce-playground    文件:JavaCompletionSorting.java   
private static int calcMatch(final String expectedName, final List<String> words, int max) {
  if (expectedName == null) return max;

  String[] expectedWords = NameUtil.nameToWords(expectedName);
  int limit = Math.min(words.size(), expectedWords.length);
  for (int i = 0; i < limit; i++) {
    String word = words.get(words.size() - i - 1);
    String expectedWord = expectedWords[expectedWords.length - i - 1];
    if (word.equalsIgnoreCase(expectedWord)) {
      max = Math.max(max, i + 1);
    }
    else {
      break;
    }
  }
  return max;
}
项目:intellij-ce-playground    文件:JavaCompletionSorting.java   
@NotNull
@Override
public Comparable weigh(@NotNull LookupElement element) {
  final Object object = element.getObject();

  final String name = getLookupObjectName(object);
  if (name != null) {
    int max = 0;
    final List<String> wordsNoDigits = NameUtil.nameToWordsLowerCase(truncDigits(name));
    for (ExpectedTypeInfo myExpectedInfo : myExpectedTypes) {
      String expectedName = ((ExpectedTypeInfoImpl)myExpectedInfo).getExpectedName();
      if (expectedName != null) {
        final THashSet<String> set = new THashSet<String>(NameUtil.nameToWordsLowerCase(truncDigits(expectedName)));
        set.retainAll(wordsNoDigits);
        max = Math.max(max, set.size());
      }
    }
    return -max;
  }
  return 0;
}
项目:intellij-ce-playground    文件:DefaultSymbolNavigationContributor.java   
private static Condition<PsiMember> getQualifiedNameMatcher(String completePattern) {
  final Condition<PsiMember> qualifiedMatcher;
  if (completePattern.contains(".")) {
    final MinusculeMatcher matcher = new MinusculeMatcher("*" + StringUtil.replace(completePattern, ".", ".*"), NameUtil.MatchingCaseSensitivity.NONE);
    qualifiedMatcher = new Condition<PsiMember>() {
      @Override
      public boolean value(PsiMember member) {
        String qualifiedName = PsiUtil.getMemberQualifiedName(member);
        return qualifiedName != null && matcher.matches(qualifiedName);
      }
    };
  } else {
    //noinspection unchecked
    qualifiedMatcher = Condition.TRUE;
  }
  return qualifiedMatcher;
}
项目:intellij-ce-playground    文件:OptionsTopHitProvider.java   
@Override
public final void consumeTopHits(@NonNls String pattern, Consumer<Object> collector, Project project) {
  if (!pattern.startsWith("#")) return;
  pattern = pattern.substring(1);
  final List<String> parts = StringUtil.split(pattern, " ");

  if (parts.size() == 0) {
    return;
  }

  String id = parts.get(0);
  if (getId().startsWith(id) || pattern.startsWith(" ")) {
    if (pattern.startsWith(" ")) {
      pattern = pattern.trim();
    } else {
      pattern = pattern.substring(id.length()).trim().toLowerCase();
    }
    final MinusculeMatcher matcher = NameUtil.buildMatcher("*" + pattern, NameUtil.MatchingCaseSensitivity.NONE);
    for (BooleanOptionDescription option : getOptions(project)) {
      if (matcher.matches(option.getOption())) {
        collector.consume(option);
      }
    }
  }
}
项目:intellij-ce-playground    文件:CamelHumpMatcher.java   
private MinusculeMatcher createMatcher(final boolean caseSensitive) {
  String prefix = applyMiddleMatching(myPrefix);

  if (!caseSensitive) {
    return NameUtil.buildMatcher(prefix, NameUtil.MatchingCaseSensitivity.NONE);
  }

  switch (CodeInsightSettings.getInstance().COMPLETION_CASE_SENSITIVE) {
    case CodeInsightSettings.NONE:
      return NameUtil.buildMatcher(prefix, NameUtil.MatchingCaseSensitivity.NONE);
    case CodeInsightSettings.FIRST_LETTER:
      return NameUtil.buildMatcher(prefix, NameUtil.MatchingCaseSensitivity.FIRST_LETTER);
    default:
      return NameUtil.buildMatcher(prefix, NameUtil.MatchingCaseSensitivity.ALL);
  }
}
项目:intellij-ce-playground    文件:CapitalizeAndUnderscoreMacro.java   
@VisibleForTesting
public String convertString(String text) {
  final String[] words = NameUtil.nameToWords(text);
  boolean insertUnderscore = false;
  final StringBuilder buf = new StringBuilder();
  for (String word : words) {
    if (!Character.isLetterOrDigit(word.charAt(0))) {
      buf.append("_");
      insertUnderscore = false;
      continue;
    }
    if (insertUnderscore) {
      buf.append("_");
    } else {
      insertUnderscore = true;
    }
    buf.append(convertCase(word));
  }
  return buf.toString();
}
项目:intellij-ce-playground    文件:SearchEverywhereAction.java   
private synchronized void buildStructure(final String pattern) {
  if (!Registry.is("search.everywhere.structure") || myStructureModel == null) return;
  final List<StructureViewTreeElement> elements = new ArrayList<StructureViewTreeElement>();
  final MinusculeMatcher matcher = new MinusculeMatcher("*" + pattern, NameUtil.MatchingCaseSensitivity.NONE);
  fillStructure(myStructureModel.getRoot(), elements, matcher);
  if (elements.size() > 0) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        if (isCanceled()) return;
        myListModel.titleIndex.structure = myListModel.size();
        for (Object element : elements) {
          myListModel.addElement(element);
        }
        myListModel.moreIndex.files = -1;
      }
    });
  }
}
项目:intellij-ce-playground    文件:DefaultChooseByNameItemProvider.java   
private static void processNamesByPattern(@NotNull final ChooseByNameBase base,
                                          @NotNull final String[] names,
                                          @NotNull final String pattern,
                                          final ProgressIndicator indicator,
                                          @NotNull final Consumer<MatchResult> consumer) {
  final MinusculeMatcher matcher = buildPatternMatcher(pattern, NameUtil.MatchingCaseSensitivity.NONE);
  Processor<String> processor = new Processor<String>() {
    @Override
    public boolean process(String name) {
      ProgressManager.checkCanceled();
      MatchResult result = matches(base, pattern, matcher, name);
      if (result != null) {
        consumer.consume(result);
      }
      return true;
    }
  };
  if (!JobLauncher.getInstance().invokeConcurrentlyUnderProgress(Arrays.asList(names), indicator, false, true, processor)) {
    throw new ProcessCanceledException();
  }
}
项目:intellij-ce-playground    文件:ListChooseByNameModel.java   
@Nullable
private Pattern getTaskPattern(String pattern) {
  if (!Comparing.strEqual(pattern, myPattern)) {
    myCompiledPattern = null;
    myPattern = pattern;
  }
  if (myCompiledPattern == null) {
    final String regex = "^.*" + NameUtil.buildRegexp(pattern, 0, true, true);

    final Perl5Compiler compiler = new Perl5Compiler();
    try {
      myCompiledPattern = compiler.compile(regex);
    }
    catch (MalformedPatternException ignored) {
    }
  }
  return myCompiledPattern;
}
项目:MvnRunner    文件:PomNavigationContributor.java   
@Override
public void processElementsWithName(@NotNull String name,
                                    @NotNull final Processor<NavigationItem> processor,
                                    @NotNull FindSymbolParameters parameters) {
    final MinusculeMatcher matcher = NameUtil.buildMatcher(parameters.getCompletePattern(), NameUtil.MatchingCaseSensitivity.FIRST_LETTER);

    if (!matcher.isStartMatch(name.substring(0, name.lastIndexOf(':')))) return;

    String[] names = name.split(":");
    MavenId mavenId = new MavenId(names[0], names[1], names[2]);
    projectsManager = MavenProjectsManager.getInstance(project);
    MavenProject p = projectsManager.findProject(mavenId);
    PsiFileSystemItem pomFile = null;
    if (p != null) {
        pomFile = PsiManager.getInstance(project).findFile(p.getFile());
    } else if (parameters.isSearchInLibraries()) {
        Map<MavenId, PsiFile> notImportPoms = getNotImportPoms(projectsManager.getRootProjects().get(0));
        pomFile = notImportPoms.get(mavenId);
    }
    if (pomFile != null) {
        PomWrapper pomWrapper = new PomWrapper(pomFile, mavenId, project.getBasePath(), showPomLocation);
        processor.process(pomWrapper);
    }
}
项目:tools-idea    文件:SuspiciousNameCombinationInspection.java   
@Nullable private String findNameGroup(@Nullable final String name) {
  if (name == null) {
    return null;
  }
  String[] words = NameUtil.splitNameIntoWords(name);
  String result = null;
  for(String word: words) {
    String group = myWordToGroupMap.get(word.toLowerCase());
    if (group != null) {
      if (result == null) {
        result = group;
      }
      else if (!result.equals(group)) {
        result = null;
        break;
      }
    }
  }
  return result;
}
项目:tools-idea    文件:JavaCompletionSorting.java   
private static int calcMatch(final String expectedName, final List<String> words, int max) {
  if (expectedName == null) return max;

  String[] expectedWords = NameUtil.nameToWords(expectedName);
  int limit = Math.min(words.size(), expectedWords.length);
  for (int i = 0; i < limit; i++) {
    String word = words.get(words.size() - i - 1);
    String expectedWord = expectedWords[expectedWords.length - i - 1];
    if (word.equalsIgnoreCase(expectedWord)) {
      max = Math.max(max, i + 1);
    }
    else {
      break;
    }
  }
  return max;
}
项目:tools-idea    文件:JavaCompletionSorting.java   
@NotNull
@Override
public Comparable weigh(@NotNull LookupElement element) {
  final Object object = element.getObject();

  final String name = getLookupObjectName(object);
  if (name != null) {
    int max = 0;
    final List<String> wordsNoDigits = NameUtil.nameToWordsLowerCase(truncDigits(name));
    for (ExpectedTypeInfo myExpectedInfo : myExpectedTypes) {
      String expectedName = ((ExpectedTypeInfoImpl)myExpectedInfo).expectedName.compute();
      if (expectedName != null) {
        final THashSet<String> set = new THashSet<String>(NameUtil.nameToWordsLowerCase(truncDigits(expectedName)));
        set.retainAll(wordsNoDigits);
        max = Math.max(max, set.size());
      }
    }
    return -max;
  }
  return 0;
}
项目:tools-idea    文件:CamelHumpMatcher.java   
private MinusculeMatcher createMatcher(final boolean caseSensitive) {
  String prefix = applyMiddleMatching(myPrefix);

  if (!caseSensitive) {
    return NameUtil.buildMatcher(prefix, NameUtil.MatchingCaseSensitivity.NONE);
  }

  switch (CodeInsightSettings.getInstance().COMPLETION_CASE_SENSITIVE) {
    case CodeInsightSettings.NONE:
      return NameUtil.buildMatcher(prefix, NameUtil.MatchingCaseSensitivity.NONE);
    case CodeInsightSettings.FIRST_LETTER:
      return NameUtil.buildMatcher(prefix, NameUtil.MatchingCaseSensitivity.FIRST_LETTER);
    default:
      return NameUtil.buildMatcher(prefix, NameUtil.MatchingCaseSensitivity.ALL);
  }
}
项目:tools-idea    文件:CapitalizeAndUnderscoreMacro.java   
@Override
protected Result calculateResult(@NotNull Expression[] params, ExpressionContext context, boolean quick) {
  String text = getTextResult(params, context, true);
  if (text != null && text.length() > 0) {
    final String[] words = NameUtil.nameToWords(text);
    boolean insertUnderscore = false;
    final StringBuffer buf = new StringBuffer();
    for (String word : words) {
      if (insertUnderscore) {
        buf.append("_");
      } else {
        insertUnderscore = true;
      }
      buf.append(StringUtil.toUpperCase(word));
    }
    return new TextResult(buf.toString());
  }
  return null;
}
项目:tools-idea    文件:DefaultChooseByNameItemProvider.java   
private static void processNamesByPattern(@NotNull final ChooseByNameBase base,
                                          @NotNull final String[] names,
                                          @NotNull final String pattern,
                                          final ProgressIndicator indicator,
                                          @NotNull final Consumer<MatchResult> consumer) {
  final MinusculeMatcher matcher = buildPatternMatcher(pattern, NameUtil.MatchingCaseSensitivity.NONE);
  Processor<String> processor = new Processor<String>() {
    @Override
    public boolean process(String name) {
      ProgressManager.checkCanceled();
      MatchResult result = matches(base, pattern, matcher, name);
      if (result != null) {
        consumer.consume(result);
      }
      return true;
    }
  };
  JobLauncher.getInstance().invokeConcurrentlyUnderProgress(Arrays.asList(names), indicator, false, false, processor);
}
项目:tools-idea    文件:ListChooseByNameModel.java   
@Nullable
private Pattern getTaskPattern(String pattern) {
  if (!Comparing.strEqual(pattern, myPattern)) {
    myCompiledPattern = null;
    myPattern = pattern;
  }
  if (myCompiledPattern == null) {
    final String regex = "^.*" + NameUtil.buildRegexp(pattern, 0, true, true);

    final Perl5Compiler compiler = new Perl5Compiler();
    try {
      myCompiledPattern = compiler.compile(regex);
    }
    catch (MalformedPatternException ignored) {
    }
  }
  return myCompiledPattern;
}
项目:consulo-csharp    文件:CSharpCompletionSorting.java   
@Nullable
@Override
@RequiredReadAction
public Comparable weigh(@NotNull LookupElement element)
{
    if(myExpectedNames.isEmpty())
    {
        return null;
    }

    String targetName = getName(element);
    if(targetName != null)
    {
        int max = 0;
        final List<String> wordsNoDigits = NameUtil.nameToWordsLowerCase(truncDigits(targetName));
        for(String expectedName : myExpectedNames)
        {
            final THashSet<String> set = new THashSet<>(NameUtil.nameToWordsLowerCase(truncDigits(expectedName)));
            set.retainAll(wordsNoDigits);
            max = Math.max(max, set.size());
        }
        return -max;
    }
    return 0;
}
项目:consulo-csharp    文件:CSharpCompletionSorting.java   
private static int calcMatch(final String expectedName, final List<String> words, int max)
{
    if(expectedName == null)
    {
        return max;
    }

    String[] expectedWords = NameUtil.nameToWords(expectedName);
    int limit = Math.min(words.size(), expectedWords.length);
    for(int i = 0; i < limit; i++)
    {
        String word = words.get(words.size() - i - 1);
        String expectedWord = expectedWords[expectedWords.length - i - 1];
        if(word.equalsIgnoreCase(expectedWord))
        {
            max = Math.max(max, i + 1);
        }
        else
        {
            break;
        }
    }
    return max;
}
项目:consulo    文件:OptionsTopHitProvider.java   
@Override
public final void consumeTopHits(@NonNls String pattern, Consumer<Object> collector, Project project) {
  if (!pattern.startsWith("#")) return;
  pattern = pattern.substring(1);
  final List<String> parts = StringUtil.split(pattern, " ");

  if (parts.size() == 0) return;

  String id = parts.get(0);
  if (getId().startsWith(id)) {
    pattern = pattern.substring(id.length()).trim().toLowerCase();
    final MinusculeMatcher matcher = NameUtil.buildMatcher("*" + pattern, NameUtil.MatchingCaseSensitivity.NONE);
    for (BooleanOptionDescription option : getOptions(project)) {
      if (matcher.matches(option.getOption())) {
        collector.consume(option);
      }
    }
  }
}
项目:consulo    文件:CamelHumpMatcher.java   
private MinusculeMatcher createMatcher(final boolean caseSensitive) {
  String prefix = applyMiddleMatching(myPrefix);

  if (!caseSensitive) {
    return NameUtil.buildMatcher(prefix, NameUtil.MatchingCaseSensitivity.NONE);
  }

  switch (CodeInsightSettings.getInstance().COMPLETION_CASE_SENSITIVE) {
    case CodeInsightSettings.NONE:
      return NameUtil.buildMatcher(prefix, NameUtil.MatchingCaseSensitivity.NONE);
    case CodeInsightSettings.FIRST_LETTER:
      return NameUtil.buildMatcher(prefix, NameUtil.MatchingCaseSensitivity.FIRST_LETTER);
    default:
      return NameUtil.buildMatcher(prefix, NameUtil.MatchingCaseSensitivity.ALL);
  }
}
项目:consulo    文件:CapitalizeAndUnderscoreMacro.java   
@Override
protected Result calculateResult(@Nonnull Expression[] params, ExpressionContext context, boolean quick) {
  String text = getTextResult(params, context, true);
  if (text != null && text.length() > 0) {
    final String[] words = NameUtil.nameToWords(text);
    boolean insertUnderscore = false;
    final StringBuffer buf = new StringBuffer();
    for (String word : words) {
      if (insertUnderscore) {
        buf.append("_");
      } else {
        insertUnderscore = true;
      }
      buf.append(StringUtil.toUpperCase(word));
    }
    return new TextResult(buf.toString());
  }
  return null;
}
项目:consulo    文件:SearchEverywhereAction.java   
private synchronized void buildStructure(final String pattern) {
  if (!Registry.is("search.everywhere.structure") || myStructureModel == null) return;
  final List<StructureViewTreeElement> elements = new ArrayList<>();
  final MinusculeMatcher matcher = new MinusculeMatcher("*" + pattern, NameUtil.MatchingCaseSensitivity.NONE);
  fillStructure(myStructureModel.getRoot(), elements, matcher);
  if (elements.size() > 0) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        if (isCanceled()) return;
        myListModel.titleIndex.structure = myListModel.size();
        for (Object element : elements) {
          myListModel.addElement(element);
        }
        myListModel.moreIndex.files = -1;
      }
    });
  }
}
项目:consulo    文件:SearchEverywhereAction.java   
private SearchResult getConfigurations(String pattern, int max) {
  SearchResult configurations = new SearchResult();
  if (!Registry.is("search.everywhere.configurations")) {
    return configurations;
  }
  MinusculeMatcher matcher = new MinusculeMatcher(pattern, NameUtil.MatchingCaseSensitivity.NONE);
  final ChooseRunConfigurationPopup.ItemWrapper[] wrappers = ChooseRunConfigurationPopup.createSettingsList(project, new ExecutorProvider() {
    @Override
    public Executor getExecutor() {
      return ExecutorRegistry.getInstance().getExecutorById(ToolWindowId.DEBUG);
    }
  }, false);
  check();
  for (ChooseRunConfigurationPopup.ItemWrapper wrapper : wrappers) {
    if (matcher.matches(wrapper.getText()) && !myListModel.contains(wrapper)) {
      if (configurations.size() == max) {
        configurations.needMore = true;
        break;
      }
      configurations.add(wrapper);
    }
    check();
  }

  return configurations;
}
项目:consulo    文件:DefaultChooseByNameItemProvider.java   
private static void processNamesByPattern(@Nonnull final ChooseByNameBase base,
                                          @Nonnull final String[] names,
                                          @Nonnull final String pattern,
                                          final ProgressIndicator indicator,
                                          @Nonnull final Consumer<MatchResult> consumer) {
  final MinusculeMatcher matcher = buildPatternMatcher(pattern, NameUtil.MatchingCaseSensitivity.NONE);
  Processor<String> processor = new Processor<String>() {
    @Override
    public boolean process(String name) {
      ProgressManager.checkCanceled();
      MatchResult result = matches(base, pattern, matcher, name);
      if (result != null) {
        consumer.consume(result);
      }
      return true;
    }
  };
  if (!JobLauncher.getInstance().invokeConcurrentlyUnderProgress(Arrays.asList(names), indicator, false, true, processor)) {
    throw new ProcessCanceledException();
  }
}
项目:consulo    文件:ListChooseByNameModel.java   
@Nullable
private Pattern getTaskPattern(String pattern) {
  if (!Comparing.strEqual(pattern, myPattern)) {
    myCompiledPattern = null;
    myPattern = pattern;
  }
  if (myCompiledPattern == null) {
    final String regex = "^.*" + NameUtil.buildRegexp(pattern, 0, true, true);

    final Perl5Compiler compiler = new Perl5Compiler();
    try {
      myCompiledPattern = compiler.compile(regex);
    }
    catch (MalformedPatternException ignored) {
    }
  }
  return myCompiledPattern;
}
项目:consulo-java    文件:SuspiciousNameCombinationInspection.java   
@Nullable private String findNameGroup(@Nullable final String name) {
  if (name == null) {
    return null;
  }
  String[] words = NameUtil.splitNameIntoWords(name);
  String result = null;
  for(String word: words) {
    String group = myWordToGroupMap.get(word.toLowerCase());
    if (group != null) {
      if (result == null) {
        result = group;
      }
      else if (!result.equals(group)) {
        result = null;
        break;
      }
    }
  }
  return result;
}
项目:consulo-java    文件:JavaCompletionSorting.java   
private static int calcMatch(final String expectedName, final List<String> words, int max)
{
    if(expectedName == null)
    {
        return max;
    }

    String[] expectedWords = NameUtil.nameToWords(expectedName);
    int limit = Math.min(words.size(), expectedWords.length);
    for(int i = 0; i < limit; i++)
    {
        String word = words.get(words.size() - i - 1);
        String expectedWord = expectedWords[expectedWords.length - i - 1];
        if(word.equalsIgnoreCase(expectedWord))
        {
            max = Math.max(max, i + 1);
        }
        else
        {
            break;
        }
    }
    return max;
}
项目:consulo-java    文件:JavaCompletionSorting.java   
@NotNull
@Override
public Comparable weigh(@NotNull LookupElement element)
{
    final Object object = element.getObject();

    final String name = getLookupObjectName(object);
    if(name != null)
    {
        int max = 0;
        final List<String> wordsNoDigits = NameUtil.nameToWordsLowerCase(truncDigits(name));
        for(ExpectedTypeInfo myExpectedInfo : myExpectedTypes)
        {
            String expectedName = ((ExpectedTypeInfoImpl) myExpectedInfo).getExpectedName();
            if(expectedName != null)
            {
                final THashSet<String> set = new THashSet<>(NameUtil.nameToWordsLowerCase(truncDigits(expectedName)));
                set.retainAll(wordsNoDigits);
                max = Math.max(max, set.size());
            }
        }
        return -max;
    }
    return 0;
}
项目:consulo-java    文件:JavaCodeStyleManagerImpl.java   
@NotNull
private String[] getSuggestionsByName(@NotNull String name, @NotNull VariableKind variableKind, boolean isArray, boolean correctKeywords)
{
    boolean upperCaseStyle = variableKind == VariableKind.STATIC_FINAL_FIELD;
    boolean preferLongerNames = getSettings().PREFER_LONGER_NAMES;
    String prefix = getPrefixByVariableKind(variableKind);
    String suffix = getSuffixByVariableKind(variableKind);

    List<String> answer = new ArrayList<String>();
    for(String suggestion : NameUtil.getSuggestionsByName(name, prefix, suffix, upperCaseStyle, preferLongerNames, isArray))
    {
        answer.add(correctKeywords ? changeIfNotIdentifier(suggestion) : suggestion);
    }

    return ArrayUtil.toStringArray(answer);
}
项目:intellij-ce-playground    文件:JavaCompletionSorting.java   
private static int getNameEndMatchingDegree(final String name, ExpectedTypeInfo[] expectedInfos) {
  int res = 0;
  if (name != null && expectedInfos != null) {
    final List<String> words = NameUtil.nameToWordsLowerCase(name);
    final List<String> wordsNoDigits = NameUtil.nameToWordsLowerCase(truncDigits(name));
    int max1 = calcMatch(words, 0, expectedInfos);
    max1 = calcMatch(wordsNoDigits, max1, expectedInfos);
    res = max1;
  }

  return res;
}
项目:intellij-ce-playground    文件:JavaCompletionSorting.java   
@NotNull
@Override
public Comparable weigh(@NotNull LookupElement element) {
  final Object object = element.getObject();
  final String name = getLookupObjectName(object);

  if (name != null && getNameEndMatchingDegree(name, myExpectedTypes) != 0) {
    return NameUtil.nameToWords(name).length - 1000;
  }
  return 0;
}
项目:intellij-ce-playground    文件:DefaultClassNavigationContributor.java   
@Override
public void processElementsWithName(@NotNull String name,
                                    @NotNull final Processor<NavigationItem> processor,
                                    @NotNull final FindSymbolParameters parameters) {
  String namePattern = StringUtil.getShortName(parameters.getCompletePattern());
  boolean hasDollar = namePattern.contains("$");
  if (hasDollar) {
    Matcher matcher = ChooseByNamePopup.patternToDetectAnonymousClasses.matcher(namePattern);
    if (matcher.matches()) {
      namePattern = matcher.group(1);
      hasDollar = namePattern.contains("$");
    }
  }
  final MinusculeMatcher innerMatcher = hasDollar ? new MinusculeMatcher("*" + namePattern, NameUtil.MatchingCaseSensitivity.NONE) : null;
  PsiShortNamesCache.getInstance(parameters.getProject()).processClassesWithName(name, new Processor<PsiClass>() {
    final boolean isAnnotation = parameters.getLocalPatternName().startsWith("@");

    @Override
    public boolean process(PsiClass aClass) {
      if (aClass.getContainingFile().getVirtualFile() == null || !aClass.isPhysical()) return true;
      if (isAnnotation && !aClass.isAnnotationType()) return true;
      if (innerMatcher != null) {
        if (aClass.getContainingClass() == null) return true;
        String jvmQName = ClassUtil.getJVMClassName(aClass);
        if (jvmQName == null || !innerMatcher.matches(StringUtil.getShortName(jvmQName))) return true;
      }
      return processor.process(aClass);
    }
  }, parameters.getSearchScope(), parameters.getIdFilter());
}
项目:intellij-ce-playground    文件:JavaNameSuggestionProvider.java   
@Nullable
private static String[] suggestProperlyCasedName(PsiElement psiElement) {
  if (!(psiElement instanceof PsiNamedElement)) return null;
  if (psiElement instanceof PsiFile) return null;
  String name = ((PsiNamedElement)psiElement).getName();
  if (name == null) return null;
  String prefix = "";
  if (psiElement instanceof PsiVariable) {
    final JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance(psiElement.getProject());
    final VariableKind kind = codeStyleManager.getVariableKind((PsiVariable)psiElement);
    prefix = codeStyleManager.getPrefixByVariableKind(kind);
    if (kind == VariableKind.STATIC_FINAL_FIELD) {
      final String[] words = NameUtil.splitNameIntoWords(name);
      StringBuilder buffer = new StringBuilder();
      for (int i = 0; i < words.length; i++) {
        String word = words[i];
        if (i > 0) buffer.append('_');
        buffer.append(StringUtil.toUpperCase(word));
      }
      return new String[] {buffer.toString()};
    }
  }
  final List<String> result = new ArrayList<String>();
  result.add(suggestProperlyCasedName(prefix, NameUtil.splitNameIntoWords(name)));
  if (name.startsWith(prefix)) {
    name = name.substring(prefix.length());
    result.add(suggestProperlyCasedName(prefix, NameUtil.splitNameIntoWords(name)));
  }
  result.add(suggestProperlyCasedName(prefix, NameUtil.splitNameIntoWords(name.toLowerCase())));
  return ArrayUtil.toStringArray(result);
}
项目:intellij-ce-playground    文件:SpeedSearch.java   
public void updatePattern(final String string) {
  myString = string;
  try {
    myMatcher = NameUtil.buildMatcher("*" + string, 0, true, false);
  }
  catch (Exception e) {
    myMatcher = null;
  }
}
项目:intellij-ce-playground    文件:TypePresentationService.java   
public static String getDefaultTypeName(final Class aClass) {
  String simpleName = aClass.getSimpleName();
  final int i = simpleName.indexOf('$');
  if (i >= 0) {
    simpleName = simpleName.substring(i + 1);
  }
  return StringUtil.capitalizeWords(StringUtil.join(NameUtil.nameToWords(simpleName), " "), true);
}
项目:intellij-ce-playground    文件:ClassFinder.java   
@Nullable
private String computeClassName(final File file) {
  String absPath = file.getAbsolutePath();
  if (!includeUnconventionallyNamedTests) {
    if (absPath.endsWith("Test.class")) {
      return StringUtil.trimEnd(absPath.substring(startPackageName), ".class").replace(File.separatorChar, '.');
    }
  }
  else {
    String className = file.getName();
    if (className.endsWith(".class")) {
      int dollar = className.lastIndexOf("$");
      if (dollar != -1) {
        className = className.substring(dollar + 1);
        // most likely something like RecursionManagerTest$_testMayCache_closure5 or other anonymous class
        // may cause https://issues.apache.org/jira/browse/GROOVY-5351
        if (!Character.isUpperCase(className.charAt(0))) return null;
      }

      // A test may be named Test*, *Test, *Tests*, *TestCase, *TestSuite, *Suite, etc
      List<String> words = Arrays.asList(NameUtil.nameToWords(className));

      if (words.contains("Test") || words.contains("Tests") || words.contains("Suite")) {
        String fqn = StringUtil.trimEnd(absPath.substring(startPackageName), ".class").replace(File.separatorChar, '.');
        if (!Arrays.asList("com.intellij.tests.BootstrapTests", "com.intellij.AllTests").contains(fqn)) {
          return fqn;
        }
      }
    }
  }
  return null;
}
项目:intellij-ce-playground    文件:SpeedSearchComparator.java   
private MinusculeMatcher obtainMatcher(@NotNull String pattern) {
  if (myRecentSearchText == null || !myRecentSearchText.equals(pattern)) {
    myRecentSearchText = pattern;
    if (myShouldMatchCamelCase) {
      pattern = StringUtil.join(NameUtil.nameToWords(pattern), "*");
    }
    if (!myShouldMatchFromTheBeginning && !pattern.startsWith("*")) {
      pattern = "*" + pattern;
    }
    myMinusculeMatcher = createMatcher(pattern);
  }
  return myMinusculeMatcher;
}
项目:intellij-ce-playground    文件:TestFinderHelper.java   
public static List<Pair<String, Integer>> collectPossibleClassNamesWithWeights(String testName) {
  String[] words = NameUtil.splitNameIntoWords(testName);
  List<Pair<String, Integer>> result = new ArrayList<Pair<String, Integer>>();

  for (int from = 0; from < words.length; from++) {
    for (int to = from; to < words.length; to++) {
      result.add(new Pair<String, Integer>(StringUtil.join(words, from, to + 1, ""),
                                           words.length - from + to));
    }
  }

  return result;
}