feat: added templates

This commit is contained in:
2026-06-21 19:09:08 +03:00
parent 464094e6cb
commit 2cc7a3a2c3
10 changed files with 526 additions and 103 deletions
@@ -0,0 +1,77 @@
package ru.omni_devel.cards
import kotlinx.serialization.Serializable
import org.json.JSONArray
import org.json.JSONObject
@Serializable
class Field(
val id: String,
val name: String,
val default: String? = null,
val maybeEmpty: Boolean = false
)
@Serializable
class Template(
val name: 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"),
name = fieldObj.getString("name"),
default = fieldObj.optString("default"),
maybeEmpty = fieldObj.optBoolean("maybeEmpty")
))
}
return Template(
name = obj.getString("name"),
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"),
name = fieldObj.getString("name"),
default = fieldObj.optString("default"),
maybeEmpty = fieldObj.optBoolean("maybeEmpty")
))
}
templates.add(Template(
name = obj.getString("name"),
fields = fields,
template = obj.getString("template")
))
}
return templates
}
}
}