Files
OmniCards/mobile/src/main/java/ru/omni_devel/cards/Template.kt
T
2026-06-22 22:33:11 +03:00

77 lines
2.4 KiB
Kotlin

package ru.omni_devel.cards
import kotlinx.serialization.Serializable
import org.json.JSONArray
import org.json.JSONObject
@Serializable
class Field(
val id: String,
val names: LinkedHashMap<String, String>,
val default: String? = null,
val maybeEmpty: Boolean = false
)
@Serializable
class Template(
val names: LinkedHashMap<String, String>,
val fields: List<Field>,
val template: String
) {
companion object {
fun parseTemplateFromJson(json: String): Template {
val obj = JSONObject(json)
val fieldsArray = obj.getJSONArray("fields")
val fields = mutableListOf<Field>()
for (fi in 0 until fieldsArray.length()) {
val fieldObj = fieldsArray.getJSONObject(fi)
fields.add(Field(
id = fieldObj.getString("id"),
names = jsonObjectToMap(fieldObj.getJSONObject("names")),
default = fieldObj.optString("default"),
maybeEmpty = fieldObj.optBoolean("maybeEmpty")
))
}
return Template(
names = jsonObjectToMap(obj.getJSONObject("names")),
fields = fields,
template = obj.getString("template")
)
}
fun parseTemplatesFromJson(json: String): List<Template> {
val array = JSONArray(json)
val templates = mutableListOf<Template>()
for (i in 0 until array.length()) {
val obj = array.getJSONObject(i)
val fieldsArray = obj.getJSONArray("fields")
val fields = mutableListOf<Field>()
for (fi in 0 until fieldsArray.length()) {
val fieldObj = fieldsArray.getJSONObject(fi)
fields.add(Field(
id = fieldObj.getString("id"),
names = jsonObjectToMap(fieldObj.getJSONObject("names")),
default = fieldObj.optString("default"),
maybeEmpty = fieldObj.optBoolean("maybeEmpty")
))
}
templates.add(Template(
names = jsonObjectToMap(obj.getJSONObject("names")),
fields = fields,
template = obj.getString("template")
))
}
return templates
}
}
}