diff options
| author | hannibal2 <24389977+hannibal002@users.noreply.github.com> | 2024-10-27 16:26:04 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-27 15:26:04 +0000 |
| commit | 31c884c8123ad5f6c9376503effce3fb2ded5d55 (patch) | |
| tree | 9a8f917c146cc00fa7d2cf410134e723448f9971 | |
| parent | ed924d10fe10e89ac58299f8a4c60b970b400be1 (diff) | |
| download | SkyHanni-31c884c8123ad5f6c9376503effce3fb2ded5d55.tar.gz SkyHanni-31c884c8123ad5f6c9376503effce3fb2ded5d55.tar.bz2 SkyHanni-31c884c8123ad5f6c9376503effce3fb2ded5d55.zip | |
Refactor: Optimize NEUInternalName class caching and naming (#2841)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/utils/NEUInternalName.kt | 68 |
1 files changed, 31 insertions, 37 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/NEUInternalName.kt b/src/main/java/at/hannibal2/skyhanni/utils/NEUInternalName.kt index 50444f711..3b155c642 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/NEUInternalName.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/NEUInternalName.kt @@ -6,73 +6,67 @@ class NEUInternalName private constructor(private val internalName: String) { companion object { - private val map = mutableMapOf<String, NEUInternalName>() + private val internalNameMap = mutableMapOf<String, NEUInternalName>() - val NONE = "NONE".asInternalName() - val MISSING_ITEM = "MISSING_ITEM".asInternalName() + val NONE = "NONE".toInternalName() + val MISSING_ITEM = "MISSING_ITEM".toInternalName() - val JASPER_CRYSTAL = "JASPER_CRYSTAL".asInternalName() - val RUBY_CRYSTAL = "RUBY_CRYSTAL".asInternalName() - val SKYBLOCK_COIN = "SKYBLOCK_COIN".asInternalName() - val WISP_POTION = "WISP_POTION".asInternalName() + val JASPER_CRYSTAL = "JASPER_CRYSTAL".toInternalName() + val RUBY_CRYSTAL = "RUBY_CRYSTAL".toInternalName() + val SKYBLOCK_COIN = "SKYBLOCK_COIN".toInternalName() + val WISP_POTION = "WISP_POTION".toInternalName() - fun String.asInternalName(): NEUInternalName { - val internalName = uppercase().replace(" ", "_") - return map.getOrPut(internalName) { NEUInternalName(internalName) } + @Deprecated("Name changed", ReplaceWith("this.toInternalName()")) + fun String.asInternalName() = toInternalName() + + fun String.toInternalName(): NEUInternalName = uppercase().replace(" ", "_").let { + internalNameMap.getOrPut(it) { NEUInternalName(it) } } - fun fromItemNameOrNull(itemName: String): NEUInternalName? = - ItemNameResolver.getInternalNameOrNull(itemName.removeSuffix(" Pet")) ?: getCoins(itemName) + private val itemNameCache = mutableMapOf<String, NEUInternalName?>() - fun fromItemNameOrInternalName(itemName: String): NEUInternalName = - fromItemNameOrNull(itemName) ?: itemName.asInternalName() + fun fromItemNameOrNull(itemName: String): NEUInternalName? = itemNameCache.getOrPut(itemName) { + ItemNameResolver.getInternalNameOrNull(itemName.removeSuffix(" Pet")) ?: getCoins(itemName) + } - private fun getCoins(itemName: String): NEUInternalName? = if (isCoins(itemName)) SKYBLOCK_COIN else null + fun fromItemNameOrInternalName(itemName: String): NEUInternalName = fromItemNameOrNull(itemName) ?: itemName.toInternalName() - private fun isCoins(itemName: String): Boolean = - itemName.lowercase().let { - when (it) { - "coin", "coins", - "skyblock coin", "skyblock coins", - "skyblock_coin", "skyblock_coins", - -> true + private fun getCoins(itemName: String): NEUInternalName? = when { + isCoins(itemName) -> SKYBLOCK_COIN + else -> null + } - else -> false - } - } + private val coinNames = setOf( + "coin", "coins", + "skyblock coin", "skyblock coins", + "skyblock_coin", "skyblock_coins", + ) + private fun isCoins(itemName: String): Boolean = itemName.lowercase() in coinNames fun fromItemName(itemName: String): NEUInternalName = fromItemNameOrNull(itemName) ?: run { val name = "itemName:$itemName" ItemUtils.addMissingRepoItem(name, "Could not find internal name for $name") - return MISSING_ITEM + MISSING_ITEM } } fun asString() = internalName - override fun equals(other: Any?): Boolean { - if (other is NEUInternalName) { - return internalName == other.internalName - } - return super.equals(other) - } + override fun equals(other: Any?) = other is NEUInternalName && internalName == other.internalName override fun toString(): String = "internalName:$internalName" override fun hashCode(): Int = internalName.hashCode() - @Suppress("WrongEqualsTypeParameter") - fun equals(other: String) = internalName == other - fun contains(other: String) = internalName.contains(other) fun startsWith(other: String) = internalName.startsWith(other) fun endsWith(other: String) = internalName.endsWith(other) - fun replace(oldValue: String, newValue: String) = - internalName.replace(oldValue.uppercase(), newValue.uppercase()).asInternalName() + fun replace(oldValue: String, newValue: String): NEUInternalName = + internalName.replace(oldValue, newValue, ignoreCase = true).toInternalName() fun isKnownItem(): Boolean = getItemStackOrNull() != null || this == SKYBLOCK_COIN } |
