Comments (2)
All of those will be similar to implement as the List codecs here.
from helios.
I was trying to implement encoder and decoder for Array, but I've found some issues:
A
can be neitherin
norout
- When converting list to array using
toTypedArray
type must be reified.
@extension
interface ArrayEncoderInstance<A> : Encoder<Array<A>> {
fun encoderA(): Encoder<A>
override fun Array<A>.encode(): Json =
JsArray(map { encoderA().run { it.encode() } })
companion object {
operator fun <A> invoke(encoderA: Encoder<A>): Encoder<Array<A>> =
object : ArrayEncoderInstance<A> {
override fun encoderA(): Encoder<A> = encoderA
}
}
}
@extension
interface ArrayDecoderInstance<A> : Decoder<Array<A>> {
fun decoderA(): Decoder<A>
override fun decode(value: Json): Either<DecodingError, Array<A>> =
value.asJsArray().toList()
.flatMap { arr ->
arr.value.map { decoderA().decode(it) }
}.sequence(Either.applicative()).fix().map { it.fix().toTypedArray() }
companion object {
operator fun <A> invoke(decoderA: Decoder<A>): Decoder<Array<A>> =
object : ArrayDecoderInstance<A> {
override fun decoderA(): Decoder<A> = decoderA
}
}
}
from helios.
Related Issues (20)
- Dependencies between generated files fail to resolve HOT 2
- Typealias breaks generated code
- Readme on version 0.1
- Header button and features styles HOT 1
- java.lang.NoSuchMethodError while generating decoders HOT 2
- Doc - Dead link
- Weird 'add' function HOT 3
- Use Arrow version 0.10.0
- Nullable type results in StackOverflowError HOT 1
- Add key encoders and decoders for java time types
- Upgrade retrofit version
- Separate java 8 codecs to a separated module HOT 2
- Add support for custom serialization names
- is this a dead comment? HOT 2
- JsString.encode() escape characters HOT 1
- Move CI from Travis to Github Actions HOT 1
- Remove all deprecations after upgrade to Arrow 0.10.3 HOT 2
- Update for Kotlin 1.4.x
- Failing to Resolve Dependancy HOT 2
- Review the performance on the codecs
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from helios.