kantan.codecs

package kantan.codecs

Members list

Packages

Provides a simple mechanism to insert derived type class instances in the implicit resolution mechanism.

Provides a simple mechanism to insert derived type class instances in the implicit resolution mechanism.

By default, when imported, such instances have the highest possible priority, which is typically problematic with shapeless instance derivation: bespoke instances for Option or Either, for example, find themselves shadowed by the generically derived ones.

If such instances are of type kantan.codecs.export.DerivedDecoder / kantan.codecs.export.DerivedEncoder rather than Decoder / Encoder, however, they'll find themselves with a lower precedence and only be used if no other, more specific instance is found.

Attributes

Defines codecs for encoding to and decoding from strings.

Defines codecs for encoding to and decoding from strings.

These codecs are not necessary meant to use directly, but more as part of larger ones. kantan.csv, for example, works with CSV files but delegates the act of encoding to or decoding from a CSV cell to string codecs.

Default instances can be found in kantan.codecs.strings.codecs.

Attributes

Type members

Classlikes

trait Codec[E, D, F, T] extends Decoder[E, D, F, T], Encoder[E, D, T]

Combines a Decoder and an Encoder.

Combines a Decoder and an Encoder.

Codecs are only meant as a convenience, and should not be considered more powerful or desirable than encoders or decoders. Some types can be both encoded to and decoded from, and being able to define both instances in one call is convenient. It's however very poor practice to request a type to have a Codec instance - a much preferred alternative would be to require it to have a Decoder and an Encoder instance, which a Codec would fulfill.

Attributes

Companion
object
Supertypes
trait Encoder[E, D, T]
trait Decoder[E, D, F, T]
trait Serializable
class Object
trait Matchable
class Any
Show all
object Codec

Provides instance creation methods for Codec.

Provides instance creation methods for Codec.

Attributes

Companion
trait
Supertypes
class Object
trait Matchable
class Any
Self type
Codec.type
trait CodecCompanion[E, F, T]

Attributes

Supertypes
class Object
trait Matchable
class Any
Known subtypes
object StringCodec
trait Decoder[E, D, F, T] extends Serializable

Type class for types that can be decoded from other types.

Type class for types that can be decoded from other types.

Type parameters

D

decoded type - what to decode to.

E

encoded type - what to decode from.

F

failure type - how to represent errors.

T

tag type - used to specialise decoder instances, and usually where default implementations are declared.

Attributes

Companion
object
Supertypes
trait Serializable
class Object
trait Matchable
class Any
Known subtypes
trait Codec[E, D, F, T]
object Decoder

Attributes

Companion
trait
Supertypes
class Object
trait Matchable
class Any
Self type
Decoder.type
trait DecoderCompanion[E, F, T] extends Serializable

Provides methods commonly declared by companion objects for specialised decoder types.

Provides methods commonly declared by companion objects for specialised decoder types.

Most libraries that use kantan.codecs will declare type aliases for decoders - CellDecoder in kantan.csv, for example. DecoderCompanion lets such types have a useful companion object without a lot of code duplication.

Attributes

Supertypes
trait Serializable
class Object
trait Matchable
class Any
Known subtypes
object StringDecoder
trait Encoder[E, D, T] extends Serializable

Type class for types that can be encoded into others.

Type class for types that can be encoded into others.

Type parameters

D

decoded type - what to encode from.

E

encoded type - what to encode to.

T

tag type.

Attributes

Companion
object
Supertypes
trait Serializable
class Object
trait Matchable
class Any
Known subtypes
trait Codec[E, D, F, T]
object Encoder

Attributes

Companion
trait
Supertypes
class Object
trait Matchable
class Any
Self type
Encoder.type
trait EncoderCompanion[E, T]

Attributes

Supertypes
class Object
trait Matchable
class Any
Known subtypes
object StringEncoder
trait Optional[A] extends Serializable

Type class that represents data types that have an "empty" value.

Type class that represents data types that have an "empty" value.

The purpose of this type class is to allow automatic derivation of Decoder for decoded types that might not have a value - Option, List...

In theory, there should rarely be a need to interact directly with this type class, and one is usually better served by obtaining the Decoder instance for Option and mapping on it.

Attributes

Companion
object
Supertypes
trait Serializable
class Object
trait Matchable
class Any
object Optional

Attributes

Companion
trait
Supertypes
class Object
trait Matchable
class Any
Self type
Optional.type

Provides trait that result companion object can extend.

Provides trait that result companion object can extend.

The idea is that libraries that rely on kantan.codecs are likely to provide type-constrained versions of result, such as DecodeResult in kantan.csv. Users are likely to expect goodies such as fromTry or sequence on DecodeResult's companion object, which can be achieved by extending kantan.codecs.ResultCompanion.WithDefault.

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type