letIterableOrNone<T extends Object> function

Option<Iterable<T>> letIterableOrNone<T extends Object>(
  1. dynamic input
)

Implementation

Option<Iterable<T>> letIterableOrNone<T extends Object>(dynamic input) {
  switch (input) {
    case Option<Iterable<T>> o:
      return o;
    case Iterable<T> i:
      return Some(i);
    case String s:
      final decodedIterable = jsonDecodeOrNone<Iterable<dynamic>>(s);
      return decodedIterable.flatMap((iter) => letAsOrNone<Iterable<T>>(iter));
    case Iterable<dynamic> i:
      return letAsOrNone<Iterable<T>>(i);
    case Some(value: final v):
      return letIterableOrNone<T>(v);
    default:
      return const None();
  }
}