Name and serialization fix

This commit is contained in:
Alexander Nozik 2019-08-19 22:42:08 +03:00
parent d16d051a1c
commit 62916d0c67
3 changed files with 7 additions and 5 deletions

View File

@ -3,7 +3,7 @@ plugins {
id("scientifik.publish") version "0.1.4" apply false id("scientifik.publish") version "0.1.4" apply false
} }
val dataforgeVersion by extra("0.1.3") val dataforgeVersion by extra("0.1.4-dev-1")
val bintrayRepo by extra("dataforge") val bintrayRepo by extra("dataforge")
val githubProject by extra("dataforge-core") val githubProject by extra("dataforge-core")

View File

@ -4,6 +4,7 @@ import hep.dataforge.meta.Config
import hep.dataforge.meta.Meta import hep.dataforge.meta.Meta
import hep.dataforge.meta.toConfig import hep.dataforge.meta.toConfig
import hep.dataforge.names.Name import hep.dataforge.names.Name
import hep.dataforge.names.NameToken
import hep.dataforge.names.toName import hep.dataforge.names.toName
import kotlinx.serialization.* import kotlinx.serialization.*
import kotlinx.serialization.internal.StringDescriptor import kotlinx.serialization.internal.StringDescriptor
@ -11,7 +12,7 @@ import kotlinx.serialization.json.JsonObjectSerializer
@Serializer(Name::class) @Serializer(Name::class)
object NameSerializer : KSerializer<Name> { object NameSerializer : KSerializer<Name> {
override val descriptor: SerialDescriptor = StringDescriptor override val descriptor: SerialDescriptor = StringDescriptor.withName("Name")
override fun deserialize(decoder: Decoder): Name { override fun deserialize(decoder: Decoder): Name {
return decoder.decodeString().toName() return decoder.decodeString().toName()
@ -22,6 +23,9 @@ object NameSerializer : KSerializer<Name> {
} }
} }
@Serializer(NameToken::class)
object NameTokenSerializer: KSerializer<NameToken>
/** /**
* Serialized for meta * Serialized for meta
*/ */

View File

@ -139,9 +139,7 @@ fun String.toName(): Name {
* Convert the [String] to a [Name] by simply wrapping it in a single name token without parsing. * Convert the [String] to a [Name] by simply wrapping it in a single name token without parsing.
* The input string could contain dots and braces, but they are just escaped, not parsed. * The input string could contain dots and braces, but they are just escaped, not parsed.
*/ */
fun String.asName(): Name { fun String.asName(): Name = if(isBlank()) EmptyName else NameToken(this).asName()
return NameToken(this).asName()
}
operator fun NameToken.plus(other: Name): Name = Name(listOf(this) + other.tokens) operator fun NameToken.plus(other: Name): Name = Name(listOf(this) + other.tokens)