diff --git a/lib/build.gradle.kts b/lib/build.gradle.kts
index 2ab1f25..be86be5 100644
--- a/lib/build.gradle.kts
+++ b/lib/build.gradle.kts
@@ -108,7 +108,7 @@ tasks {
archiveBaseName.set(rootProject.name)
}
- "sonarqube" {
+ "sonar" {
dependsOn(koverReport)
}
}
diff --git a/lib/detekt-baseline.xml b/lib/detekt-baseline.xml
index f63f67e..6438727 100644
--- a/lib/detekt-baseline.xml
+++ b/lib/detekt-baseline.xml
@@ -7,6 +7,6 @@
MagicNumber:UrlEncoder.kt$UrlEncoder$16
MagicNumber:UrlEncoder.kt$UrlEncoder$3
MagicNumber:UrlEncoder.kt$UrlEncoder$4
- NestedBlockDepth:UrlEncoder.kt$UrlEncoder$@JvmStatic fun encode(source: String, vararg allow: Char): String
+ NestedBlockDepth:UrlEncoder.kt$UrlEncoder$@JvmStatic fun encode(source: String, allow: String): String
diff --git a/lib/src/main/kotlin/net/thauvin/erik/urlencoder/UrlEncoder.kt b/lib/src/main/kotlin/net/thauvin/erik/urlencoder/UrlEncoder.kt
index 63220e5..89b76bf 100644
--- a/lib/src/main/kotlin/net/thauvin/erik/urlencoder/UrlEncoder.kt
+++ b/lib/src/main/kotlin/net/thauvin/erik/urlencoder/UrlEncoder.kt
@@ -83,7 +83,7 @@ object UrlEncoder {
ch = source[i]
if (ch == '%') {
if (out == null) {
- out = StringBuilder(source.length)
+ out = StringBuilder(length)
out.append(source, 0, i)
}
if (bytesBuffer == null) {
@@ -125,7 +125,7 @@ object UrlEncoder {
* encoding. Letters, numbers, unreserved (`_-!.~'()*`) and allowed characters are left intact.
*/
@JvmStatic
- fun encode(source: String, vararg allow: Char): String {
+ fun encode(source: String, allow: String): String {
if (source.isBlank()) {
return source
}
@@ -135,7 +135,7 @@ object UrlEncoder {
var i = 0
while (i < source.length) {
ch = source[i]
- if (ch.isUnreserved() || allow.contains(ch)) {
+ if (ch.isUnreserved() || allow.indexOf(ch) != -1) {
out?.append(ch)
i++
} else {
@@ -165,4 +165,13 @@ object UrlEncoder {
return out?.toString() ?: source
}
+
+ /**
+ * Transforms a provided [String] object into a new string, containing only valid URL characters in the UTF-8
+ * encoding. Letters, numbers, unreserved (`_-!.~'()*`) and allowed characters are left intact.
+ */
+ @JvmStatic
+ fun encode(source: String, vararg allow: Char): String {
+ return encode(source, String(allow))
+ }
}
diff --git a/lib/src/test/kotlin/net/thauvin/erik/urlencoder/UrlEncoderTest.kt b/lib/src/test/kotlin/net/thauvin/erik/urlencoder/UrlEncoderTest.kt
index 2930a59..223e8e8 100644
--- a/lib/src/test/kotlin/net/thauvin/erik/urlencoder/UrlEncoderTest.kt
+++ b/lib/src/test/kotlin/net/thauvin/erik/urlencoder/UrlEncoderTest.kt
@@ -23,6 +23,7 @@ import org.junit.Test
import kotlin.test.assertEquals
import kotlin.test.assertFailsWith
import kotlin.test.assertSame
+import kotlin.test.assertTrue
class UrlEncoderTest {
@@ -53,10 +54,13 @@ class UrlEncoderTest {
fun testEncode() {
assertEquals("", encode(""))
assertSame(same, encode(same))
+ assertSame(same, encode(same, ""))
+ assertTrue(encode("").isEmpty())
validMap.forEach {
assertEquals(it.value, encode(it.key))
}
assertEquals("?test=a%20test", encode("?test=a test", '=', '?'))
+ assertEquals("?test=a%20test", encode("?test=a test", "=?"))
assertEquals("aaa", encode("aaa", 'a'))
}
}