mirror of
https://github.com/logos-storage/questionable.git
synced 2026-01-02 13:53:11 +00:00
Simplify
This commit is contained in:
parent
986716511f
commit
a2ded4f01a
@ -20,23 +20,14 @@ template `?`*(T: typed): type Option[T] =
|
||||
template `!`*[T](option: ?T): T =
|
||||
option.get
|
||||
|
||||
template `->?`*[T,U](option: ?T, expression: U): ?U =
|
||||
if option.isSome:
|
||||
expression.some
|
||||
else:
|
||||
U.none
|
||||
|
||||
template `->?`*[T,U](option: ?T, expression: ?U): ?U =
|
||||
if option.isSome:
|
||||
expression
|
||||
else:
|
||||
U.none
|
||||
|
||||
template `->?`*[T,U,V](options: (?T, ?U), expression: V): ?V =
|
||||
if options[0].isSome and options[1].isSome:
|
||||
expression.some
|
||||
else:
|
||||
V.none
|
||||
template `->?`*[T,U](option: ?T, expression: U): ?U =
|
||||
option ->? expression.some
|
||||
|
||||
template `->?`*[T,U,V](options: (?T, ?U), expression: ?V): ?V =
|
||||
if options[0].isSome and options[1].isSome:
|
||||
@ -44,6 +35,9 @@ template `->?`*[T,U,V](options: (?T, ?U), expression: ?V): ?V =
|
||||
else:
|
||||
V.none
|
||||
|
||||
template `->?`*[T,U,V](options: (?T, ?U), expression: V): ?V =
|
||||
options ->? expression.some
|
||||
|
||||
template `|?`*[T](option: ?T, fallback: T): T =
|
||||
if option.isSome:
|
||||
option.unsafeGet()
|
||||
|
||||
@ -47,25 +47,14 @@ proc isSuccess*[T](value: ?!T): bool =
|
||||
proc isFailure*[T](value: ?!T): bool =
|
||||
value.isErr
|
||||
|
||||
template `->?`*[T,U](value: ?!T, expression: U): ?!U =
|
||||
if value.isFailure:
|
||||
U.failure(value.error)
|
||||
else:
|
||||
expression.success
|
||||
|
||||
template `->?`*[T,U](value: ?!T, expression: ?!U): ?!U =
|
||||
if value.isFailure:
|
||||
U.failure(value.error)
|
||||
else:
|
||||
expression
|
||||
|
||||
template `->?`*[T,U,V](values: (?!T, ?!U), expression: V): ?!V =
|
||||
if values[0].isFailure:
|
||||
V.failure(values[0].error)
|
||||
elif values[1].isFailure:
|
||||
V.failure(values[1].error)
|
||||
else:
|
||||
expression.success
|
||||
template `->?`*[T,U](value: ?!T, expression: U): ?!U =
|
||||
value ->? expression.success
|
||||
|
||||
template `->?`*[T,U,V](values: (?!T, ?!U), expression: ?!V): ?!V =
|
||||
if values[0].isFailure:
|
||||
@ -75,6 +64,9 @@ template `->?`*[T,U,V](values: (?!T, ?!U), expression: ?!V): ?!V =
|
||||
else:
|
||||
expression
|
||||
|
||||
template `->?`*[T,U,V](values: (?!T, ?!U), expression: V): ?!V =
|
||||
values ->? expression.success
|
||||
|
||||
template `|?`*[T,E](value: Result[T,E], fallback: T): T =
|
||||
value.valueOr(fallback)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user