Fix Android compatibility

Koitharu 3 years ago
parent 6b95a8c55e
commit 0366ad0e57
No known key found for this signature in database
GPG Key ID: 8E861F8CE6E7CE27

@ -171,7 +171,8 @@ internal class ComickFunParser(context: MangaLoaderContext) : MangaParser(contex
val dc = list.groupBy { jo -> jo.getStringOrNull("vol") to jo.getStringOrNull("chap") }
val branches = list.associateGrouping { jo ->
jo.getString("lang") to jo.optJSONArray("group_name")
?.joinToString { it.toString() }
?.asIterable<String>()
?.joinToString()
?.takeUnless { it.isBlank() }
}
val chaptersBuilder = ChaptersListBuilder(list.size)
@ -182,7 +183,8 @@ internal class ComickFunParser(context: MangaLoaderContext) : MangaParser(contex
for (jo in value) {
val lang = jo.getString("lang")
val locale = Locale.forLanguageTag(lang)
val team = jo.optJSONArray("group_name")?.joinToString { it.toString() }?.takeUnless { it.isBlank() }
val team =
jo.optJSONArray("group_name")?.asIterable<String>()?.joinToString()?.takeUnless { it.isBlank() }
var branch = locale.getDisplayName(locale).toTitleCase(locale)
if (branches[lang].orEmpty().size > 1 && team != null) {
branch += " ($team)"

@ -0,0 +1,18 @@
package org.koitharu.kotatsu.parsers.util.json
import org.json.JSONArray
class JSONTypedIterator<T>(
private val array: JSONArray,
private val cls: Class<T>,
) : Iterator<T> {
private val total = array.length()
private var index = 0
override fun hasNext() = index < total
override fun next(): T {
return cls.cast(array.get(index++))
}
}

@ -14,4 +14,4 @@ class JSONValuesIterator(
val key = keyIterator.next()
return jo.get(key)
}
}
}

@ -141,3 +141,7 @@ fun JSONArray?.isNullOrEmpty(): Boolean {
fun JSONArray.toJSONList(): List<JSONObject> {
return List(length()) { i -> getJSONObject(i) }
}
inline fun <reified T> JSONArray.asIterable(): Iterable<T> = Iterable {
JSONTypedIterator(this, T::class.java)
}

Loading…
Cancel
Save