diff --git a/util/src/main/java/dev/openrs2/util/StringUtils.kt b/util/src/main/java/dev/openrs2/util/StringUtils.kt index e48c10d5..d48ac8d4 100644 --- a/util/src/main/java/dev/openrs2/util/StringUtils.kt +++ b/util/src/main/java/dev/openrs2/util/StringUtils.kt @@ -1,5 +1,7 @@ package dev.openrs2.util +import dev.openrs2.util.charset.Cp1252Charset + fun CharSequence.indefiniteArticle(): String { require(isNotEmpty()) @@ -8,3 +10,11 @@ fun CharSequence.indefiniteArticle(): String { else -> "a" } } + +fun CharSequence.krHashCode(): Int { + var hash = 0 + for (c in this) { + hash = ((hash shl 5) - hash) + Cp1252Charset.encode(c) + } + return hash +} diff --git a/util/src/test/java/dev/openrs2/util/StringUtilsTest.kt b/util/src/test/java/dev/openrs2/util/StringUtilsTest.kt index c780e20d..1dfacf5c 100644 --- a/util/src/test/java/dev/openrs2/util/StringUtilsTest.kt +++ b/util/src/test/java/dev/openrs2/util/StringUtilsTest.kt @@ -13,4 +13,11 @@ object StringUtilsTest { "".indefiniteArticle() } } + + @Test + fun testKrHashCode() { + assertEquals(0, "".krHashCode()) + assertEquals(99162322, "hello".krHashCode()) + assertEquals(92340183, "h€llo".krHashCode()) + } }