package net.pterodactylus.sone.utils import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.node.ArrayNode import com.fasterxml.jackson.databind.node.JsonNodeFactory.instance import com.fasterxml.jackson.databind.node.ObjectNode fun jsonObject(block: ObjectNode.() -> Unit): ObjectNode = ObjectNode(instance).apply(block) fun jsonObject(vararg properties: Pair) = jsonObject { properties.forEach { it.second.let { value -> when (value) { is String -> put(it.first, value) is Int -> put(it.first, value) is Long -> put(it.first, value) is Boolean -> put(it.first, value) else -> Unit } } } } fun jsonArray(vararg objects: String?): ArrayNode = objects.fold(ArrayNode(instance), ArrayNode::add) fun jsonArray(vararg objects: JsonNode?): ArrayNode = objects.fold(ArrayNode(instance), ArrayNode::add) fun Iterable.toArray(): ArrayNode = fold(ArrayNode(instance), ArrayNode::add)