From b7447c4da22205d50dd105ee96dfbcdef75448ec Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 12 Jun 2024 11:41:37 +0200 Subject: [PATCH] add Tags.boardNumber --- core/src/main/scala/format/pgn/Tag.scala | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/src/main/scala/format/pgn/Tag.scala b/core/src/main/scala/format/pgn/Tag.scala index 4a82b7c2..f195ccc4 100644 --- a/core/src/main/scala/format/pgn/Tag.scala +++ b/core/src/main/scala/format/pgn/Tag.scala @@ -31,9 +31,7 @@ case class Tags(value: List[Tag]) extends AnyVal: def clockConfig: Option[Clock.Config] = value - .collectFirst { case Tag(Tag.TimeControl, str) => - str - } + .collectFirst { case Tag(Tag.TimeControl, str) => str } .flatMap(Clock.readPgnConfig) def variant: Option[chess.variant.Variant] = @@ -73,6 +71,14 @@ case class Tags(value: List[Tag]) extends AnyVal: Tags.tagIndex.getOrElse(tag.name, 999) ) + def boardNumber: Option[Int] = + apply(_.Board) + .flatMap(_.toIntOption) + .orElse: // Round 1.x is sometimes used for board x + apply(_.Round) + .flatMap(_.split('.').lift(1)) + .flatMap(_.toIntOption) + def names: ByColor[Option[PlayerName]] = ByColor(apply(_.White), apply(_.Black)).map(PlayerName.from(_)) def elos: ByColor[Option[Elo]] = ByColor(apply(_.WhiteElo), apply(_.BlackElo)).map: elo => Elo.from(elo.flatMap(_.toIntOption))