Transforms a String
-based encoder into one of the proper type.
Transforms a String
-based encoder into one of the proper type.
Creates a Codec instance that uses the specified format.
Creates a Codec instance that uses the specified format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeCodecCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> val codec = Foo.dateTimeCodec(fmt"yyyy-MM-DD'T'HH:mm:ss.SSSzz") scala> val encoded = codec.encode(new DateTime(2000, 1, 1, 12, 0, 0, DateTimeZone.UTC)) res1: String = 2000-01-01T12:00:00.000UTC scala> codec.decode(encoded) res2: StringResult[DateTime] = Right(2000-01-01T12:00:00.000Z)
Creates a Codec instance that uses the specified format.
Creates a Codec instance that uses the specified format.
scala> import org.joda.time._, format._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeCodecCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> val codec = Foo.dateTimeCodec(ISODateTimeFormat.dateTime()) scala> val encoded = codec.encode(new DateTime(2000, 1, 1, 12, 0, 0, DateTimeZone.UTC)) res1: String = 2000-01-01T12:00:00.000UTC scala> codec.decode(encoded).right.map(_.withZone(DateTimeZone.UTC)) res2 = Right(2000-01-01T12:00:00.000Z)
Creates a Decoder instance that uses the specified format.
Creates a Decoder instance that uses the specified format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeDecoderCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | } scala> Foo.dateTimeDecoder(fmt"yyyy-MM-DD'T'HH:mm:ss.SSSzz") | .decode("2000-01-01T12:00:00.000UTC") res1: StringResult[DateTime] = Right(2000-01-01T12:00:00.000Z)
Creates a Decoder instance that uses the specified format.
Creates a Decoder instance that uses the specified format.
scala> import org.joda.time._, format._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeDecoderCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | } scala> Foo.dateTimeDecoder(ISODateTimeFormat.dateTime().withZone(DateTimeZone.UTC)) | .decode("2000-01-01T12:00:00.000Z") res1: StringResult[DateTime] = Right(2000-01-01T12:00:00.000Z)
Creates an Encoder instance that uses the specified format.
Creates an Encoder instance that uses the specified format.
scala> import org.joda.time._, format._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeEncoderCompanion[String, codecs.type] { | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> Foo.dateTimeEncoder(Format(ISODateTimeFormat.dateTime())) | .encode(new DateTime(2000, 1, 1, 12, 0, 0, DateTimeZone.UTC)) res1: String = 2000-01-01T12:00:00.000Z
Creates an Encoder instance that uses the specified format.
Creates an Encoder instance that uses the specified format.
scala> import org.joda.time._, format._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeEncoderCompanion[String, codecs.type] { | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> Foo.dateTimeEncoder(ISODateTimeFormat.dateTime()) | .encode(new DateTime(2000, 1, 1, 12, 0, 0, DateTimeZone.UTC)) res1: String = 2000-01-01T12:00:00.000Z
Creates a Decoder instance using the default format.
Creates a Decoder instance using the default format.
scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeDecoderCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | } scala> Foo.defaultDateTimeDecoder | .decode("2000-01-01T12:00:00.000Z") | .right.map(_.withZone(DateTimeZone.UTC)) res1 = Right(2000-01-01T12:00:00.000Z)
Creates an Encoder instance using the default format.
Creates an Encoder instance using the default format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeEncoderCompanion[String, codecs.type] { | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> Foo.defaultDateTimeEncoder | .encode(new DateTime(2000, 1, 1, 12, 0, 0, DateTimeZone.UTC)) res1: String = 2000-01-01T12:00:00.000Z
Creates a Decoder instance using the default format.
Creates a Decoder instance using the default format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeDecoderCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | } scala> Foo.defaultLocalDateDecoder | .decode("2000-01-01") res1: StringResult[LocalDate] = Right(2000-01-01)
Creates an Encoder instance using the default format.
Creates an Encoder instance using the default format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeEncoderCompanion[String, codecs.type] { | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> Foo.defaultLocalDateEncoder | .encode(new LocalDate(2000, 1, 1)) res1: String = 2000-01-01
Creates a Decoder instance using the default format.
Creates a Decoder instance using the default format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeDecoderCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | } scala> Foo.defaultLocalDateTimeDecoder | .decode("2000-01-01T12:00:00.000") res1: StringResult[LocalDateTime] = Right(2000-01-01T12:00:00.000)
Creates an Encoder instance using the default format.
Creates an Encoder instance using the default format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeEncoderCompanion[String, codecs.type] { | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> Foo.defaultLocalDateTimeEncoder | .encode(new LocalDateTime(2000, 1, 1, 12, 0, 0)) res1: String = 2000-01-01T12:00:00.000
Creates a Decoder instance using the default format.
Creates a Decoder instance using the default format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeDecoderCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | } scala> Foo.defaultLocalTimeDecoder | .decode("12:00:00.000") res1: StringResult[LocalTime] = Right(12:00:00.000)
Creates an Encoder instance using the default format.
Creates an Encoder instance using the default format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeEncoderCompanion[String, codecs.type] { | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> Foo.defaultLocalTimeEncoder | .encode(new LocalTime(12, 0, 0, 0)) res1: String = 12:00:00.000
Creates a Codec instance that uses the specified format.
Creates a Codec instance that uses the specified format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeCodecCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> val codec = Foo.localDateCodec(fmt"yyyy-MM-DD") scala> val encoded = codec.encode(new LocalDate(2000, 1, 1)) res1: String = 2000-01-01 scala> codec.decode(encoded) res2: StringResult[LocalDate] = Right(2000-01-01)
Creates a Codec instance that uses the specified format.
Creates a Codec instance that uses the specified format.
scala> import org.joda.time._, format._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeCodecCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> val codec = Foo.localDateCodec(new DateTimeFormatter( | ISODateTimeFormat.date().getPrinter, | ISODateTimeFormat.localDateParser().getParser | )) scala> val encoded = codec.encode(new LocalDate(2000, 1, 1)) res1: String = 2000-01-01 scala> codec.decode(encoded) res2: StringResult[LocalDate] = Right(2000-01-01)
Creates a Decoder instance that uses the specified format.
Creates a Decoder instance that uses the specified format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeDecoderCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | } scala> Foo.localDateDecoder(fmt"yyyy-MM-DD") | .decode("2000-01-01") res1: StringResult[LocalDate] = Right(2000-01-01)
Creates a Decoder instance that uses the specified format.
Creates a Decoder instance that uses the specified format.
scala> import org.joda.time._, format._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeDecoderCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | } scala> Foo.localDateDecoder(ISODateTimeFormat.localDateParser()) | .decode("2000-01-01") res1: StringResult[LocalDate] = Right(2000-01-01)
Creates an Encoder instance that uses the specified format.
Creates an Encoder instance that uses the specified format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeEncoderCompanion[String, codecs.type] { | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> Foo.localDateEncoder(fmt"yyyy-MM-DD") | .encode(new LocalDate(2000, 1, 1)) res1: String = 2000-01-01
Creates an Encoder instance that uses the specified format.
Creates an Encoder instance that uses the specified format.
scala> import org.joda.time._, format._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeEncoderCompanion[String, codecs.type] { | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> Foo.localDateEncoder(ISODateTimeFormat.date()) | .encode(new LocalDate(2000, 1, 1)) res1: String = 2000-01-01
Creates a Codec instance that uses the specified format.
Creates a Codec instance that uses the specified format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeCodecCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> val codec = Foo.localDateTimeCodec(fmt"yyyy-MM-DD'T'HH:mm:ss.SSS") scala> val encoded = codec.encode(new LocalDateTime(2000, 1, 1, 12, 0, 0)) res1: String = 2000-01-01T12:00:00.000 scala> codec.decode(encoded) res2: StringResult[LocalDateTime] = Right(2000-01-01T12:00:00.000)
Creates a Codec instance that uses the specified format.
Creates a Codec instance that uses the specified format.
scala> import org.joda.time._, format._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeCodecCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> val codec = Foo.localDateTimeCodec(new DateTimeFormatter( | ISODateTimeFormat.dateTime().getPrinter, | ISODateTimeFormat.localDateOptionalTimeParser().getParser | )) scala> val encoded = codec.encode(new LocalDateTime(2000, 1, 1, 12, 0, 0)) res1: String = 2000-01-01T12:00:00.000 scala> codec.decode(encoded) res2: StringResult[LocalDateTime] = Right(2000-01-01T12:00:00.000)
Creates a Decoder instance that uses the specified format.
Creates a Decoder instance that uses the specified format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeDecoderCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | } scala> Foo.localDateTimeDecoder(fmt"yyyy-MM-DD'T'HH:mm:ss.SSS") | .decode("2000-01-01T12:00:00.000") res1: StringResult[LocalDateTime] = Right(2000-01-01T12:00:00.000)
Creates a Decoder instance that uses the specified format.
Creates a Decoder instance that uses the specified format.
scala> import org.joda.time._, format._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeDecoderCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | } scala> Foo.localDateTimeDecoder(ISODateTimeFormat.localDateOptionalTimeParser()) | .decode("2000-01-01T12:00:00.000") res1: StringResult[LocalDateTime] = Right(2000-01-01T12:00:00.000)
Creates an Encoder instance that uses the specified format.
Creates an Encoder instance that uses the specified format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeEncoderCompanion[String, codecs.type] { | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> Foo.localDateTimeEncoder(fmt"yyyy-MM-DD'T'HH:mm:ss.SSS") | .encode(new LocalDateTime(2000, 1, 1, 12, 0, 0)) res1: String = 2000-01-01T12:00:00.000
Creates an Encoder instance that uses the specified format.
Creates an Encoder instance that uses the specified format.
scala> import org.joda.time._, format._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeEncoderCompanion[String, codecs.type] { | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> Foo.localDateTimeEncoder(ISODateTimeFormat.dateTime()) | .encode(new LocalDateTime(2000, 1, 1, 12, 0, 0)) res1: String = 2000-01-01T12:00:00.000
Creates a Codec instance that uses the specified format.
Creates a Codec instance that uses the specified format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeCodecCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> val codec = Foo.localTimeCodec(fmt"HH:mm:ss.SSS") scala> val encoded = codec.encode(new LocalTime(12, 0, 0)) res1: String = 12:00:00.000 scala> codec.decode(encoded) res2: StringResult[LocalTime] = Right(12:00:00.000)
Creates a Codec instance that uses the specified format.
Creates a Codec instance that uses the specified format.
scala> import org.joda.time._, format._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeCodecCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> val codec = Foo.localTimeCodec(new DateTimeFormatter( | ISODateTimeFormat.time().getPrinter, | ISODateTimeFormat.localTimeParser().getParser | )) scala> val encoded = codec.encode(new LocalTime(12, 0, 0)) res1: String = 12:00:00.000 scala> codec.decode(encoded) res2: StringResult[LocalTime] = Right(12:00:00.000)
Creates a Decoder instance that uses the specified format.
Creates a Decoder instance that uses the specified format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeDecoderCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | } scala> Foo.localTimeDecoder(fmt"HH:mm:ss.SSS") | .decode("12:00:00.000") res1: StringResult[LocalTime] = Right(12:00:00.000)
Creates a Decoder instance that uses the specified format.
Creates a Decoder instance that uses the specified format.
scala> import org.joda.time._, format._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeDecoderCompanion[String, DecodeError, codecs.type] { | override def decoderFrom[D](d: StringDecoder[D]) = d | } scala> Foo.localTimeDecoder(ISODateTimeFormat.localTimeParser()) | .decode("12:00:00.000") res1: StringResult[LocalTime] = Right(12:00:00.000)
Creates an Encoder instance that uses the specified format.
Creates an Encoder instance that uses the specified format.
scala> import org.joda.time._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeEncoderCompanion[String, codecs.type] { | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> Foo.localTimeEncoder(fmt"HH:mm:ss.SSS") | .encode(new LocalTime(12, 0, 0, 0)) res1: String = 12:00:00.000
Creates an Encoder instance that uses the specified format.
Creates an Encoder instance that uses the specified format.
scala> import org.joda.time._, format._ scala> import kantan.codecs.strings._ scala> object Foo extends JodaTimeEncoderCompanion[String, codecs.type] { | override def encoderFrom[D](e: StringEncoder[D]) = e | } scala> Foo.localTimeEncoder(ISODateTimeFormat.time()) | .encode(new LocalTime(12, 0, 0, 0)) res1: String = 12:00:00.000
Provides useful methods for a joda-time codec companions.
Usage note: when declaring default implicit instances, be sure to wrap them in an export.Exported. Otherwise, custom instances and default ones are very likely to conflict.