Compare commits

...

2 Commits

Author SHA1 Message Date
Corewala eac1adb0cb Removed unused transverse function 2022-08-04 12:18:47 -04:00
Corewala eee109bb28 Made relative query strings work in accordance with the URL spec 2022-08-04 12:17:20 -04:00
1 changed files with 11 additions and 29 deletions

View File

@ -6,6 +6,7 @@ const val GEMSCHEME = "gemini://"
const val TRAVERSE = "../"
const val SOLIDUS = "/"
const val DIREND = "/"
const val QUERY = "?"
/**
*
@ -44,9 +45,18 @@ class OppenURI constructor(private var ouri: String) {
val traversalCount = reference.split(TRAVERSE).size - 1
ouri = traverse(traversalCount) + reference.replace(TRAVERSE, "")
}
reference.startsWith(QUERY) -> {
ouri = if(reference.contains(QUERY)){
ouri.substringBefore(QUERY) + reference
}else{
ouri + reference
}
}
else -> {
ouri = when {
ouri.endsWith(DIREND) -> "${ouri}$reference"
ouri.endsWith(DIREND) -> {
"${ouri}$reference"
}
else -> "${ouri.substring(0, ouri.lastIndexOf("/"))}/$reference"
}
}
@ -54,34 +64,6 @@ class OppenURI constructor(private var ouri: String) {
return ouri
}
fun traverse(): OppenURI{
val path = ouri.removePrefix("$GEMSCHEME$host")
val segments = path.split(SOLIDUS).filter { it.isNotEmpty() }
var nouri = "$GEMSCHEME$host"
when (ouri) {
"" -> {
}
GEMSCHEME -> ouri = ""
"$nouri/" -> ouri = GEMSCHEME
else -> {
when {
segments.isNotEmpty() -> {
val remaining = segments.dropLast(1)
remaining.forEach { segment ->
nouri += "/$segment"
}
ouri = "$nouri/"
}
else -> ouri = "$nouri/"
}
}
}
return this
}
private fun traverse(count: Int): String{
val path = ouri.removePrefix("$GEMSCHEME$host")
val segments = path.split(SOLIDUS).filter { it.isNotEmpty() }