All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.serializer.ElementsSerializer.kt Maven / Gradle / Ivy

Go to download

Annotation based HTML to Kotlin class parser with KMP support, jspoon successor

The newest version!
package dev.burnoo.kspoon.serializer

import com.fleeksoft.ksoup.select.Elements
import dev.burnoo.kspoon.Kspoon
import dev.burnoo.kspoon.decoder.KspoonDecoder
import kotlinx.serialization.ContextualSerializer
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder

/**
 * Serializer for [Elements].
 *
 * This Serializer is also registered by [Kspoon] as [ContextualSerializer], so it's possible to use it by annotating
 * `@Contextual` on a field.
 *
 * Example:
 * ```
 * @Serializable
 * data class Model(
 *     @Selector("ul > li")
 *     @Serializable(ElementsSerializer::class) // or @Contextual
 *     val element: Elements,
 * )
 *
 * // Elements contains 3x Element
 * val elements = Kspoon.parse("
  • 1
  • 2
  • 3
").elements * ``` */ public object ElementsSerializer : KSerializer { override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("com.fleeksoft.ksoup.select.Elements", PrimitiveKind.STRING) override fun deserialize(decoder: Decoder): Elements { return (decoder as KspoonDecoder).decodeElements() } override fun serialize(encoder: Encoder, value: Elements) { kspoonEncodeError() } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy