codecs.extended.CharRangeJSONCodec.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of fluid-json-coding Show documentation
Show all versions of fluid-json-coding Show documentation
A JSON library written in pure Kotlin (coding extension)
package com.github.fluidsonic.fluid.json
object CharRangeJSONCodec : AbstractJSONCodec() {
override fun JSONDecoder.decode(valueType: JSONCodingType): CharRange {
var endInclusive = 0.toChar()
var endInclusiveProvided = false
var start = 0.toChar()
var startProvided = false
readFromMapByElementValue { key ->
when (key) {
Fields.endInclusive -> {
endInclusive = readChar()
endInclusiveProvided = true
}
Fields.start -> {
start = readChar()
startProvided = true
}
else -> skipValue()
}
}
if (!startProvided) missingPropertyError(Fields.start)
if (!endInclusiveProvided) missingPropertyError(Fields.endInclusive)
return start .. endInclusive
}
override fun JSONEncoder.encode(value: CharRange) {
writeIntoMap {
writeMapElement(Fields.start, char = value.first)
writeMapElement(Fields.endInclusive, char = value.last)
}
}
private object Fields {
const val endInclusive = "endInclusive"
const val start = "start"
}
}