mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-14 18:05:27 +07:00
[util] Merge NameUtilCore#uniqName into UniqueNameGenerator
GitOrigin-RevId: a43f8908b639a6e5b562be99af5f880a85cfac74
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5ae32b3ec9
commit
5caf42dc70
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user