From ed6d6f1577795fa83ecf5014f84660927b9672fd Mon Sep 17 00:00:00 2001 From: Thayne McCombs Date: Tue, 21 Jan 2025 11:26:09 -0700 Subject: [PATCH] Add map and andThen override to RowParser Override `andThen` to return a RowParser instead of just a A => B, and add a map function that is an alias to andThen. --- .../src/main/scala/com/lucidchart/relate/RowParser.scala | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/relate/src/main/scala/com/lucidchart/relate/RowParser.scala b/relate/src/main/scala/com/lucidchart/relate/RowParser.scala index b45a549..a8eea0b 100644 --- a/relate/src/main/scala/com/lucidchart/relate/RowParser.scala +++ b/relate/src/main/scala/com/lucidchart/relate/RowParser.scala @@ -5,10 +5,16 @@ import java.time.Instant import scala.collection.mutable import scala.language.higherKinds -trait RowParser[A] extends (SqlRow => A) { +trait RowParser[A] extends (SqlRow => A) { self => def parse(row: SqlRow): A def apply(row: SqlRow) = parse(row) + + override def andThen[B](g: A => B): RowParser[B] = new RowParser[B] { + def parse(row: SqlRow): B = g(self.parse(row)) + } + + def map[B](f: A => B): RowParser[B] = andThen(f) } object RowParser {