Compare commits
No commits in common. "f18f145ead76d38c0b8078b4e123e116c0b62c8c" and "ac278b6fef5a4efdf3d7eece4f698c47a98e8ffe" have entirely different histories.
f18f145ead
...
ac278b6fef
2 changed files with 9 additions and 9 deletions
|
@ -1,5 +1,4 @@
|
||||||
[](https://opensource.org/licenses/Apache-2.0)
|
[](https://opensource.org/licenses/Apache-2.0)
|
||||||
[](https://kotlinlang.org/)
|
|
||||||
[](https://oss.sonatype.org/content/repositories/snapshots/net/thauvin/erik/urlencoder/)
|
[](https://oss.sonatype.org/content/repositories/snapshots/net/thauvin/erik/urlencoder/)
|
||||||
[](https://github.com/ethauvin/urlencoder/releases/latest)
|
[](https://github.com/ethauvin/urlencoder/releases/latest)
|
||||||
[](https://maven-badges.herokuapp.com/maven-central/net.thauvin.erik/urlencoder)
|
[](https://maven-badges.herokuapp.com/maven-central/net.thauvin.erik/urlencoder)
|
||||||
|
|
|
@ -41,19 +41,18 @@ object UrlEncoder {
|
||||||
private val hexDigits = "0123456789ABCDEF".toCharArray()
|
private val hexDigits = "0123456789ABCDEF".toCharArray()
|
||||||
internal val usage =
|
internal val usage =
|
||||||
"Usage : java -jar urlencoder-*all.jar [-ed] text" + System.lineSeparator() +
|
"Usage : java -jar urlencoder-*all.jar [-ed] text" + System.lineSeparator() +
|
||||||
"Encode and decode URL components defensively." + System.lineSeparator() +
|
"Encode and decode URL components defensively." + System.lineSeparator() + " -e encode (default) " +
|
||||||
" -e encode (default) " + System.lineSeparator() +
|
System.lineSeparator() + " -d decode"
|
||||||
" -d decode"
|
|
||||||
|
|
||||||
// see https://www.rfc-editor.org/rfc/rfc3986#page-13
|
// see https://www.rfc-editor.org/rfc/rfc3986#page-13
|
||||||
// and https://url.spec.whatwg.org/#application-x-www-form-urlencoded-percent-encode-set
|
// and https://url.spec.whatwg.org/#application-x-www-form-urlencoded-percent-encode-set
|
||||||
private val unreservedChars = BitSet('z'.code + 1).apply {
|
private val unreservedChars = BitSet('z'.code + 1).apply {
|
||||||
set('-'.code)
|
set('-')
|
||||||
set('.'.code)
|
set('.')
|
||||||
for (c in '0'.code..'9'.code) {
|
for (c in '0'..'9') {
|
||||||
set(c)
|
set(c)
|
||||||
}
|
}
|
||||||
for (c in 'A'.code..'Z'.code) {
|
for (c in 'A'..'Z') {
|
||||||
set(c)
|
set(c)
|
||||||
}
|
}
|
||||||
set('_'.code)
|
set('_'.code)
|
||||||
|
@ -62,6 +61,8 @@ object UrlEncoder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun BitSet.set(c: Char) = this.set(c.code)
|
||||||
|
|
||||||
// see https://www.rfc-editor.org/rfc/rfc3986#page-13
|
// see https://www.rfc-editor.org/rfc/rfc3986#page-13
|
||||||
// and https://url.spec.whatwg.org/#application-x-www-form-urlencoded-percent-encode-set
|
// and https://url.spec.whatwg.org/#application-x-www-form-urlencoded-percent-encode-set
|
||||||
private fun Char.isUnreserved(): Boolean {
|
private fun Char.isUnreserved(): Boolean {
|
||||||
|
@ -116,7 +117,7 @@ object UrlEncoder {
|
||||||
bytesBuffer[bytesPos++] = v.toByte()
|
bytesBuffer[bytesPos++] = v.toByte()
|
||||||
i += 2
|
i += 2
|
||||||
} catch (e: NumberFormatException) {
|
} catch (e: NumberFormatException) {
|
||||||
throw IllegalArgumentException("Illegal characters in escape sequence: $e.message", e)
|
throw IllegalArgumentException("Illegal characters in escape sequence: $e.message")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (bytesBuffer != null) {
|
if (bytesBuffer != null) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue