diff --git a/core/shared/src/main/scala/works/iterative/core/Email.scala b/core/shared/src/main/scala/works/iterative/core/Email.scala index 2773e1b..fa0e853 100644 --- a/core/shared/src/main/scala/works/iterative/core/Email.scala +++ b/core/shared/src/main/scala/works/iterative/core/Email.scala @@ -17,4 +17,6 @@ _.matches(regex) ) + def unsafe(value: String): Email = apply(value).orThrow + extension (email: Email) def value: String = email diff --git a/core/shared/src/main/scala/works/iterative/core/Email.scala b/core/shared/src/main/scala/works/iterative/core/Email.scala index 2773e1b..fa0e853 100644 --- a/core/shared/src/main/scala/works/iterative/core/Email.scala +++ b/core/shared/src/main/scala/works/iterative/core/Email.scala @@ -17,4 +17,6 @@ _.matches(regex) ) + def unsafe(value: String): Email = apply(value).orThrow + extension (email: Email) def value: String = email diff --git a/core/shared/src/main/scala/works/iterative/core/Validated.scala b/core/shared/src/main/scala/works/iterative/core/Validated.scala index 4386f6d..03fc6e1 100644 --- a/core/shared/src/main/scala/works/iterative/core/Validated.scala +++ b/core/shared/src/main/scala/works/iterative/core/Validated.scala @@ -4,6 +4,13 @@ type Validated[A] = Validation[UserMessage, A] +extension [A](v: Validated[A]) + def orThrow: A = + v match + case Validation.Success(_, a) => a + case Validation.Failure(_, message) => + throw new IllegalArgumentException(message.head.id.toString()) + object Validated: /** Validate and normalize nonempty string, returning "error.empty.$lkey" if * the string is empty, trimmed string otherwise