From 905862ca53d5e2f7bcc012d186a3822f39129061 Mon Sep 17 00:00:00 2001 From: Daniel Slapman Date: Sat, 4 Jan 2025 19:12:48 +0100 Subject: [PATCH] Add utility methods to BsonKeyDecoder & BsonKeyEncoder --- oolong-bson/src/main/scala/oolong/bson/BsonKeyDecoder.scala | 3 +++ oolong-bson/src/main/scala/oolong/bson/BsonKeyEncoder.scala | 3 +++ 2 files changed, 6 insertions(+) diff --git a/oolong-bson/src/main/scala/oolong/bson/BsonKeyDecoder.scala b/oolong-bson/src/main/scala/oolong/bson/BsonKeyDecoder.scala index 1443b4c..5a6eef0 100644 --- a/oolong-bson/src/main/scala/oolong/bson/BsonKeyDecoder.scala +++ b/oolong-bson/src/main/scala/oolong/bson/BsonKeyDecoder.scala @@ -8,5 +8,8 @@ import scala.util.Try trait BsonKeyDecoder[T]: def decode(value: String): Try[T] + def emapTry[H](f: T => Try[H]): BsonKeyDecoder[H] = + (value: String) => this.decode(value).flatMap(f) + object BsonKeyDecoder: def apply[T](using bkd: BsonKeyDecoder[T]) = bkd diff --git a/oolong-bson/src/main/scala/oolong/bson/BsonKeyEncoder.scala b/oolong-bson/src/main/scala/oolong/bson/BsonKeyEncoder.scala index 87ffdaa..984d8b5 100644 --- a/oolong-bson/src/main/scala/oolong/bson/BsonKeyEncoder.scala +++ b/oolong-bson/src/main/scala/oolong/bson/BsonKeyEncoder.scala @@ -6,5 +6,8 @@ package oolong.bson trait BsonKeyEncoder[T]: def encode(t: T): String + def beforeWrite[H](f: H => T): BsonKeyEncoder[H] = + (value: H) => this.encode(f(value)) + object BsonKeyEncoder: def apply[T](using bke: BsonKeyEncoder[T]) = bke