Coverage Summary for Class: NewClickTrackNameSuggester (com.vsevolodganin.clicktrack.common)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| NewClickTrackNameSuggester |
0%
(0/4)
|
0%
(0/8)
|
0%
(0/10)
|
0%
(0/61)
|
| NewClickTrackNameSuggester$MetroFactory |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/11)
|
| NewClickTrackNameSuggester$MetroFactory$Companion |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/12)
|
| Total |
0%
(0/6)
|
0%
(0/8)
|
0%
(0/12)
|
0%
(0/84)
|
package com.vsevolodganin.clicktrack.common
import com.vsevolodganin.clicktrack.storage.ClickTrackRepository
import dev.zacsweers.metro.Inject
@Inject
class NewClickTrackNameSuggester(
private val storage: ClickTrackRepository,
) {
fun suggest(baseName: String): String {
val maxUsedDefaultNameNumber = storage.getAllNames()
.asSequence()
.mapNotNull { findDefaultNameNumber(baseName, it) }
.maxOrNull()
?: 0
return format(baseName, maxUsedDefaultNameNumber + 1)
}
private fun findDefaultNameNumber(baseName: String, input: String): Int? {
return "$baseName (\\d*)?".toRegex().find(input)?.groupValues?.get(1)?.toIntOrNull()
}
private fun format(baseName: String, withNumber: Int) = "$baseName $withNumber"
}