[util] Merge NameUtilCore#uniqName into UniqueNameGenerator

GitOrigin-RevId: a43f8908b639a6e5b562be99af5f880a85cfac74
This commit is contained in:
Tagir Valeev
2024-04-11 13:27:58 +02:00
committed by intellij-monorepo-bot
parent 5ae32b3ec9
commit 5caf42dc70
10 changed files with 85 additions and 54 deletions

View File

@@ -673,7 +673,6 @@ f:com.intellij.util.text.NameUtilCore
- s:nameToWords(java.lang.String):java.lang.String[]
- s:nextWord(java.lang.String,I):I
- s:splitNameIntoWords(java.lang.String):java.lang.String[]
- s:uniqName(java.lang.String,java.util.function.Predicate):java.lang.String
f:com.intellij.util.text.SemVer
- java.lang.Comparable
- <init>(java.lang.String,I,I,I):V

View File

@@ -7,8 +7,6 @@ import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import java.util.regex.Pattern;
public final class NameUtilCore {
@@ -170,29 +168,4 @@ public final class NameUtilCore {
}
return ArrayUtilRt.toStringArray(array);
}
/**
* Generates a unique name
*
* @param origName original symbol name
* @param alreadyUsed a predicate that returns true if a supplied name is already used and we cannot use it
* @return the name based on the origName, which is definitely not used (typically by adding a numeric suffix)
*/
public static @NotNull String uniqName(@NotNull String origName, @NotNull Predicate<@NotNull String> alreadyUsed) {
if (!alreadyUsed.test(origName)) return origName;
String baseName = origName;
int index = 0;
Pattern pattern = Pattern.compile("(.+?)(\\d+)");
java.util.regex.Matcher matcher = pattern.matcher(baseName);
if (matcher.matches()) {
baseName = matcher.group(1);
index = Integer.parseInt(matcher.group(2));
}
while (true) {
String name = baseName + (++index);
if (!alreadyUsed.test(name)) {
return name;
}
}
}
}