letMapOrNone<K extends Object, V extends Object> function

Option<Map<K, V>> letMapOrNone<K extends Object, V extends Object>(
  1. dynamic input
)

Implementation

Option<Map<K, V>> letMapOrNone<K extends Object, V extends Object>(
  dynamic input,
) {
  switch (input) {
    case Option<Map<K, V>> o:
      return o;
    case Map<K, V> m:
      return Some(m);
    case String s:
      final decodedMap = jsonDecodeOrNone<Map<dynamic, dynamic>>(s);
      return decodedMap.flatMap((map) => letAsOrNone<Map<K, V>>(map));
    case Map<dynamic, dynamic> m:
      return letAsOrNone<Map<K, V>>(m);
    case Some(value: final v):
      return letMapOrNone<K, V>(v);
    default:
      return const None();
  }
}