case-app icon indicating copy to clipboard operation
case-app copied to clipboard

Scala Duration support

Open joan38 opened this issue 2 years ago • 1 comments

Hi,

Would you be open for me to open a PR to support scala.concurrent.duration.{Duration, FiniteDuration}? As in:

  implicit val durationParser: ArgParser[Duration] =
    SimpleArgParser.from[Duration]("Duration")(s =>
      Either.catchOnly[NumberFormatException](Duration(s)).leftMap(e => MalformedValue("Duration", e.getMessage))
    )

  implicit val finiteDurationParser: ArgParser[FiniteDuration] =
    SimpleArgParser.from[FiniteDuration]("FiniteDuration")(s =>
      Either
        .catchOnly[NumberFormatException](Duration(s))
        .leftMap(e => MalformedValue("FiniteDuration", e.getMessage))
        .flatMap {
          case finite: FiniteDuration => Right(finite)
          case _ => Left(MalformedValue("FiniteDuration", s"Expected finite duration but found infinite duration: $s"))
        }
    )

Let me know Thanks

joan38 avatar Sep 08 '22 11:09 joan38

@joan38 Sure, that would work!

alexarchambault avatar Sep 08 '22 17:09 alexarchambault